rugged 0.26.0b3 → 0.26.0b4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/ext/rugged/extconf.rb +10 -7
- data/ext/rugged/rugged.c +4 -6
- data/ext/rugged/rugged_repo.c +1 -1
- data/ext/rugged/rugged_revwalk.c +4 -4
- data/ext/rugged/rugged_tree.c +2 -2
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +13 -6
- data/vendor/libgit2/COPYING +33 -0
- data/vendor/libgit2/include/git2/branch.h +12 -0
- data/vendor/libgit2/include/git2/commit.h +6 -3
- data/vendor/libgit2/include/git2/common.h +11 -0
- data/vendor/libgit2/include/git2/errors.h +2 -0
- data/vendor/libgit2/include/git2/index.h +7 -6
- data/vendor/libgit2/include/git2/repository.h +91 -0
- data/vendor/libgit2/include/git2/stash.h +2 -2
- data/vendor/libgit2/include/git2/types.h +3 -0
- data/vendor/libgit2/include/git2/worktree.h +161 -0
- data/vendor/libgit2/src/attr.c +24 -16
- data/vendor/libgit2/src/attr_file.h +1 -1
- data/vendor/libgit2/src/attrcache.c +11 -10
- data/vendor/libgit2/src/attrcache.h +1 -4
- data/vendor/libgit2/src/blob.c +2 -2
- data/vendor/libgit2/src/branch.c +63 -0
- data/vendor/libgit2/src/buffer.h +2 -1
- data/vendor/libgit2/src/cache.c +21 -25
- data/vendor/libgit2/src/cache.h +1 -1
- data/vendor/libgit2/src/checkout.c +0 -2
- data/vendor/libgit2/src/cherrypick.c +2 -2
- data/vendor/libgit2/src/clone.c +2 -3
- data/vendor/libgit2/src/commit.c +8 -4
- data/vendor/libgit2/src/config_file.c +1 -3
- data/vendor/libgit2/src/describe.c +1 -3
- data/vendor/libgit2/src/diff_driver.c +2 -4
- data/vendor/libgit2/src/fetchhead.c +2 -2
- data/vendor/libgit2/src/fileops.c +1 -3
- data/vendor/libgit2/src/hash.h +5 -3
- data/vendor/libgit2/src/hash/hash_collisiondetect.h +57 -0
- data/vendor/libgit2/src/hash/sha1dc/sha1.c +1149 -0
- data/vendor/libgit2/src/hash/sha1dc/sha1.h +94 -0
- data/vendor/libgit2/src/hash/sha1dc/ubc_check.c +361 -0
- data/vendor/libgit2/src/hash/sha1dc/ubc_check.h +35 -0
- data/vendor/libgit2/src/idxmap.c +133 -0
- data/vendor/libgit2/src/idxmap.h +22 -60
- data/vendor/libgit2/src/ignore.c +7 -1
- data/vendor/libgit2/src/ignore.h +1 -1
- data/vendor/libgit2/src/index.c +11 -14
- data/vendor/libgit2/src/indexer.c +8 -11
- data/vendor/libgit2/src/merge.c +5 -5
- data/vendor/libgit2/src/mwindow.c +1 -3
- data/vendor/libgit2/src/odb.c +3 -3
- data/vendor/libgit2/src/odb.h +3 -0
- data/vendor/libgit2/src/odb_mempack.c +11 -18
- data/vendor/libgit2/src/offmap.c +83 -0
- data/vendor/libgit2/src/offmap.h +14 -34
- data/vendor/libgit2/src/oidmap.c +105 -0
- data/vendor/libgit2/src/oidmap.h +19 -22
- data/vendor/libgit2/src/pack-objects.c +10 -13
- data/vendor/libgit2/src/pack.c +17 -26
- data/vendor/libgit2/src/path.c +45 -24
- data/vendor/libgit2/src/rebase.c +3 -3
- data/vendor/libgit2/src/refdb_fs.c +81 -46
- data/vendor/libgit2/src/refs.c +13 -3
- data/vendor/libgit2/src/remote.c +6 -2
- data/vendor/libgit2/src/repository.c +318 -46
- data/vendor/libgit2/src/repository.h +5 -2
- data/vendor/libgit2/src/revert.c +2 -2
- data/vendor/libgit2/src/revwalk.c +6 -8
- data/vendor/libgit2/src/settings.c +5 -0
- data/vendor/libgit2/src/sortedcache.c +3 -5
- data/vendor/libgit2/src/strmap.c +95 -0
- data/vendor/libgit2/src/strmap.h +17 -37
- data/vendor/libgit2/src/submodule.c +12 -8
- data/vendor/libgit2/src/thread-utils.h +6 -0
- data/vendor/libgit2/src/transaction.c +5 -17
- data/vendor/libgit2/src/transports/local.c +2 -1
- data/vendor/libgit2/src/transports/smart.h +2 -0
- data/vendor/libgit2/src/transports/smart_protocol.c +3 -1
- data/vendor/libgit2/src/tree.c +2 -4
- data/vendor/libgit2/src/unix/posix.h +1 -1
- data/vendor/libgit2/src/worktree.c +432 -0
- data/vendor/libgit2/src/worktree.h +35 -0
- metadata +13 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c54465750c07b3141d878bc3ff04483642b28e45
|
4
|
+
data.tar.gz: 611f5afabf028493898a84006cf67f3524425b77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac5b58ed5d8bfc749667525d129150d4d4fc5e0b1eb5336dcb6592e394858abec2e873f92c98531044957c29ad6ce24a0e214a13866728aa8ea268c1ff2a34a4
|
7
|
+
data.tar.gz: 5267b1068c8f95caca10f21eda59516f12c72c8a597747ef663b1d536766a1a76d948d120948d585d18886b03cc6860b7f47d211c952506a0782a1e281e819ba
|
data/README.md
CHANGED
@@ -22,6 +22,8 @@ You need to have CMake and `pkg-config` installed on your system to be able to b
|
|
22
22
|
$ brew install cmake
|
23
23
|
```
|
24
24
|
|
25
|
+
Please follow the above in case installation of the gem fails with `ERROR: CMake is required to build Rugged.`.
|
26
|
+
|
25
27
|
If you want to build Rugged with HTTPS and SSH support, check out the list of optional [libgit2 dependencies](https://github.com/libgit2/libgit2#optional-dependencies).
|
26
28
|
|
27
29
|
If you're using bundler and want to bundle `libgit2` with Rugged, you can use the `:submodules` option:
|
data/ext/rugged/extconf.rb
CHANGED
@@ -20,11 +20,14 @@ def sys(cmd)
|
|
20
20
|
ret
|
21
21
|
end
|
22
22
|
|
23
|
-
|
24
|
-
|
23
|
+
MAKE = if Gem.win_platform?
|
24
|
+
# On Windows, Ruby-DevKit only has 'make'.
|
25
|
+
find_executable('make')
|
26
|
+
else
|
27
|
+
find_executable('gmake') || find_executable('make')
|
25
28
|
end
|
26
29
|
|
27
|
-
if !
|
30
|
+
if !MAKE
|
28
31
|
abort "ERROR: GNU make is required to build Rugged."
|
29
32
|
end
|
30
33
|
|
@@ -64,7 +67,7 @@ else
|
|
64
67
|
abort "ERROR: CMake is required to build Rugged."
|
65
68
|
end
|
66
69
|
|
67
|
-
if !
|
70
|
+
if !Gem.win_platform? && !find_executable('pkg-config')
|
68
71
|
abort "ERROR: pkg-config is required to build Rugged."
|
69
72
|
end
|
70
73
|
|
@@ -73,14 +76,14 @@ else
|
|
73
76
|
|
74
77
|
Dir.chdir("build") do
|
75
78
|
# On Windows, Ruby-DevKit is MSYS-based, so ensure to use MSYS Makefiles.
|
76
|
-
generator = "-G \"MSYS Makefiles\"" if
|
77
|
-
sys("cmake .. -DBUILD_CLAR=OFF -DTHREADSAFE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS=-fPIC -DCMAKE_BUILD_TYPE=RelWithDebInfo #{generator}")
|
79
|
+
generator = "-G \"MSYS Makefiles\"" if Gem.win_platform?
|
80
|
+
sys("cmake .. -DBUILD_CLAR=OFF -DTHREADSAFE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS=-fPIC -DCMAKE_BUILD_TYPE=RelWithDebInfo #{ENV['CMAKE_FLAGS']} #{generator}")
|
78
81
|
sys(MAKE)
|
79
82
|
|
80
83
|
# "normal" libraries (and libgit2 builds) get all these when they build but we're doing it
|
81
84
|
# statically so we put the libraries in by hand. It's important that we put the libraries themselves
|
82
85
|
# in $LIBS or the final linking stage won't pick them up
|
83
|
-
if
|
86
|
+
if Gem.win_platform?
|
84
87
|
$LDFLAGS << " " + "-L#{Dir.pwd}/deps/winhttp"
|
85
88
|
$LIBS << " -lwinhttp -lcrypt32 -lrpcrt4 -lole32 -lz"
|
86
89
|
else
|
data/ext/rugged/rugged.c
CHANGED
@@ -554,17 +554,15 @@ void Init_rugged(void)
|
|
554
554
|
Init_rugged_rebase();
|
555
555
|
|
556
556
|
/*
|
557
|
-
* Sort the
|
558
|
-
* this sorting is arbitrary, implementation-specific
|
559
|
-
* and subject to change at any time.
|
557
|
+
* Sort the output with the same default time-order method from git.
|
560
558
|
* This is the default sorting for new walkers.
|
561
559
|
*/
|
562
560
|
rb_define_const(rb_mRugged, "SORT_NONE", INT2FIX(GIT_SORT_NONE));
|
563
561
|
|
564
562
|
/*
|
565
|
-
* Sort the repository contents in topological order
|
566
|
-
*
|
567
|
-
*
|
563
|
+
* Sort the repository contents in topological order (parents before
|
564
|
+
* children); this sorting mode can be combined with time sorting to
|
565
|
+
* produce git's "time-order".
|
568
566
|
*/
|
569
567
|
rb_define_const(rb_mRugged, "SORT_TOPO", INT2FIX(GIT_SORT_TOPOLOGICAL));
|
570
568
|
|
data/ext/rugged/rugged_repo.c
CHANGED
@@ -1589,7 +1589,7 @@ static int rugged__each_id_cb(const git_oid *id, void *payload)
|
|
1589
1589
|
/*
|
1590
1590
|
* call-seq:
|
1591
1591
|
* repo.each_id { |id| block }
|
1592
|
-
* repo.each_id ->
|
1592
|
+
* repo.each_id -> Enumerator
|
1593
1593
|
*
|
1594
1594
|
* Call the given +block+ once with every object ID found in +repo+
|
1595
1595
|
* and all its alternates. Object IDs are passed as 40-character
|
data/ext/rugged/rugged_revwalk.c
CHANGED
@@ -428,13 +428,13 @@ static VALUE rb_git_walk_with_opts(int argc, VALUE *argv, VALUE self, int oid_on
|
|
428
428
|
/*
|
429
429
|
* call-seq:
|
430
430
|
* walker.each { |commit| block }
|
431
|
-
* walker.each ->
|
431
|
+
* walker.each -> Enumerator
|
432
432
|
*
|
433
433
|
* Perform the walk through the repository, yielding each
|
434
434
|
* one of the commits found as a <tt>Rugged::Commit</tt> instance
|
435
435
|
* to +block+.
|
436
436
|
*
|
437
|
-
* If no +block+ is given, an +
|
437
|
+
* If no +block+ is given, an +Enumerator+ will be returned.
|
438
438
|
*
|
439
439
|
* The walker must have been previously set-up before a walk can be performed
|
440
440
|
* (i.e. at least one commit must have been pushed).
|
@@ -458,13 +458,13 @@ static VALUE rb_git_walker_each(int argc, VALUE *argv, VALUE self)
|
|
458
458
|
/*
|
459
459
|
* call-seq:
|
460
460
|
* walker.each_oid { |commit| block }
|
461
|
-
* walker.each_oid ->
|
461
|
+
* walker.each_oid -> Enumerator
|
462
462
|
*
|
463
463
|
* Perform the walk through the repository, yielding each
|
464
464
|
* one of the commit oids found as a <tt>String</tt>
|
465
465
|
* to +block+.
|
466
466
|
*
|
467
|
-
* If no +block+ is given, an +
|
467
|
+
* If no +block+ is given, an +Enumerator+ will be returned.
|
468
468
|
*
|
469
469
|
* The walker must have been previously set-up before a walk can be performed
|
470
470
|
* (i.e. at least one commit must have been pushed).
|
data/ext/rugged/rugged_tree.c
CHANGED
@@ -260,7 +260,7 @@ static int rugged__treewalk_cb(const char *root, const git_tree_entry *entry, vo
|
|
260
260
|
/*
|
261
261
|
* call-seq:
|
262
262
|
* tree.walk(mode) { |root, entry| block }
|
263
|
-
* tree.walk(mode) ->
|
263
|
+
* tree.walk(mode) -> Enumerator
|
264
264
|
*
|
265
265
|
* Walk +tree+ with the given mode (either +:preorder+ or +:postorder+) and yield
|
266
266
|
* to +block+ every entry in +tree+ and all its subtrees, as a +Hash+. The +block+
|
@@ -270,7 +270,7 @@ static int rugged__treewalk_cb(const char *root, const git_tree_entry *entry, vo
|
|
270
270
|
* If the +block+ returns a falsy value, that entry and its sub-entries (in the case
|
271
271
|
* of a folder) will be skipped for the iteration.
|
272
272
|
*
|
273
|
-
* If no +block+ is given, an +
|
273
|
+
* If no +block+ is given, an +Enumerator+ is returned instead.
|
274
274
|
*
|
275
275
|
* tree.walk(:postorder) { |root, entry| puts "#{root}#{entry[:name]} [#{entry[:oid]}]" }
|
276
276
|
*
|
data/lib/rugged/version.rb
CHANGED
@@ -37,6 +37,7 @@ OPTION( PROFILE "Generate profiling information" OFF )
|
|
37
37
|
OPTION( ENABLE_TRACE "Enables tracing support" OFF )
|
38
38
|
OPTION( LIBGIT2_FILENAME "Name of the produced binary" OFF )
|
39
39
|
|
40
|
+
OPTION( USE_SHA1DC "Use SHA-1 with collision detection" OFF )
|
40
41
|
OPTION( USE_ICONV "Link with and use iconv library" OFF )
|
41
42
|
OPTION( USE_SSH "Link with libssh to enable SSH support" ON )
|
42
43
|
OPTION( USE_GSSAPI "Link with libgssapi for SPNEGO auth" OFF )
|
@@ -292,13 +293,16 @@ ELSE ()
|
|
292
293
|
ENDIF()
|
293
294
|
|
294
295
|
# Specify sha1 implementation
|
295
|
-
IF (
|
296
|
-
ADD_DEFINITIONS(-
|
296
|
+
IF (USE_SHA1DC)
|
297
|
+
ADD_DEFINITIONS(-DGIT_SHA1_COLLISIONDETECT)
|
298
|
+
FILE(GLOB SRC_SHA1 src/hash/hash_collisiondetect.c src/hash/sha1dc/*)
|
299
|
+
ELSEIF (WIN32 AND NOT MINGW)
|
300
|
+
ADD_DEFINITIONS(-DGIT_SHA1_WIN32)
|
297
301
|
FILE(GLOB SRC_SHA1 src/hash/hash_win32.c)
|
298
302
|
ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
299
|
-
ADD_DEFINITIONS(-
|
300
|
-
ELSEIF (OPENSSL_FOUND
|
301
|
-
ADD_DEFINITIONS(-
|
303
|
+
ADD_DEFINITIONS(-DGIT_SHA1_COMMON_CRYPTO)
|
304
|
+
ELSEIF (OPENSSL_FOUND)
|
305
|
+
ADD_DEFINITIONS(-DGIT_SHA1_OPENSSL)
|
302
306
|
IF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
|
303
307
|
LIST(APPEND LIBGIT2_PC_LIBS "-lssl")
|
304
308
|
ELSE()
|
@@ -464,7 +468,10 @@ IF (MSVC)
|
|
464
468
|
# Precompiled headers
|
465
469
|
|
466
470
|
ELSE ()
|
467
|
-
SET(CMAKE_C_FLAGS "-D_GNU_SOURCE
|
471
|
+
SET(CMAKE_C_FLAGS "-D_GNU_SOURCE ${CMAKE_C_FLAGS}")
|
472
|
+
|
473
|
+
ADD_C_FLAG_IF_SUPPORTED(-Wall)
|
474
|
+
ADD_C_FLAG_IF_SUPPORTED(-Wextra)
|
468
475
|
|
469
476
|
IF (CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
|
470
477
|
SET(CMAKE_C_FLAGS "-std=c99 -D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS ${CMAKE_C_FLAGS}")
|
data/vendor/libgit2/COPYING
CHANGED
@@ -958,3 +958,36 @@ necessary. Here is a sample; alter the names:
|
|
958
958
|
That's all there is to it!
|
959
959
|
|
960
960
|
----------------------------------------------------------------------
|
961
|
+
|
962
|
+
The bundled SHA1 collision detection code is licensed under the MIT license:
|
963
|
+
|
964
|
+
MIT License
|
965
|
+
|
966
|
+
Copyright (c) 2017:
|
967
|
+
Marc Stevens
|
968
|
+
Cryptology Group
|
969
|
+
Centrum Wiskunde & Informatica
|
970
|
+
P.O. Box 94079, 1090 GB Amsterdam, Netherlands
|
971
|
+
marc@marc-stevens.nl
|
972
|
+
|
973
|
+
Dan Shumow
|
974
|
+
Microsoft Research
|
975
|
+
danshu@microsoft.com
|
976
|
+
|
977
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
978
|
+
of this software and associated documentation files (the "Software"), to deal
|
979
|
+
in the Software without restriction, including without limitation the rights
|
980
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
981
|
+
copies of the Software, and to permit persons to whom the Software is
|
982
|
+
furnished to do so, subject to the following conditions:
|
983
|
+
|
984
|
+
The above copyright notice and this permission notice shall be included in all
|
985
|
+
copies or substantial portions of the Software.
|
986
|
+
|
987
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
988
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
989
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
990
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
991
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
992
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
993
|
+
SOFTWARE.
|
@@ -245,6 +245,18 @@ GIT_EXTERN(int) git_branch_upstream_name(
|
|
245
245
|
GIT_EXTERN(int) git_branch_is_head(
|
246
246
|
const git_reference *branch);
|
247
247
|
|
248
|
+
/**
|
249
|
+
* Determine if the current branch is checked out in any linked
|
250
|
+
* repository.
|
251
|
+
*
|
252
|
+
* @param branch Reference to the branch.
|
253
|
+
*
|
254
|
+
* @return 1 if branch is checked out, 0 if it isn't,
|
255
|
+
* error code otherwise.
|
256
|
+
*/
|
257
|
+
GIT_EXTERN(int) git_branch_is_checked_out(
|
258
|
+
const git_reference *branch);
|
259
|
+
|
248
260
|
/**
|
249
261
|
* Return the name of remote that the remote tracking branch belongs to.
|
250
262
|
*
|
@@ -255,7 +255,8 @@ GIT_EXTERN(int) git_commit_nth_gen_ancestor(
|
|
255
255
|
/**
|
256
256
|
* Get an arbitrary header field
|
257
257
|
*
|
258
|
-
* @param out the buffer to fill
|
258
|
+
* @param out the buffer to fill; existing content will be
|
259
|
+
* overwritten
|
259
260
|
* @param commit the commit to look in
|
260
261
|
* @param field the header field to return
|
261
262
|
* @return 0 on succeess, GIT_ENOTFOUND if the field does not exist,
|
@@ -270,8 +271,10 @@ GIT_EXTERN(int) git_commit_header_field(git_buf *out, const git_commit *commit,
|
|
270
271
|
* `GITERR_INVALID`. If the commit does not have a signature, the
|
271
272
|
* error class will be `GITERR_OBJECT`.
|
272
273
|
*
|
273
|
-
* @param signature the signature block
|
274
|
-
*
|
274
|
+
* @param signature the signature block; existing content will be
|
275
|
+
* overwritten
|
276
|
+
* @param signed_data signed data; this is the commit contents minus the signature block;
|
277
|
+
* existing content will be overwritten
|
275
278
|
* @param repo the repository in which the commit exists
|
276
279
|
* @param commit_id the commit from which to extract the data
|
277
280
|
* @param field the name of the header field containing the signature
|
@@ -178,6 +178,7 @@ typedef enum {
|
|
178
178
|
GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION,
|
179
179
|
GIT_OPT_SET_SSL_CIPHERS,
|
180
180
|
GIT_OPT_GET_USER_AGENT,
|
181
|
+
GIT_OPT_ENABLE_OFS_DELTA,
|
181
182
|
} git_libgit2_opt_t;
|
182
183
|
|
183
184
|
/**
|
@@ -305,6 +306,16 @@ typedef enum {
|
|
305
306
|
* >
|
306
307
|
* > - `ciphers` is the list of ciphers that are eanbled.
|
307
308
|
*
|
309
|
+
* * opts(GIT_OPT_ENABLE_OFS_DELTA, int enabled)
|
310
|
+
*
|
311
|
+
* > Enable or disable the use of "offset deltas" when creating packfiles,
|
312
|
+
* > and the negotiation of them when talking to a remote server.
|
313
|
+
* > Offset deltas store a delta base location as an offset into the
|
314
|
+
* > packfile from the current location, which provides a shorter encoding
|
315
|
+
* > and thus smaller resultant packfiles.
|
316
|
+
* > Packfiles containing offset deltas can still be read.
|
317
|
+
* > This defaults to enabled.
|
318
|
+
*
|
308
319
|
* @param option Option key
|
309
320
|
* @param ... value to set the option
|
310
321
|
* @return 0 on success, <0 on failure
|
@@ -575,15 +575,16 @@ GIT_EXTERN(int) git_index_remove_bypath(git_index *index, const char *path);
|
|
575
575
|
* This method will fail in bare index instances.
|
576
576
|
*
|
577
577
|
* The `pathspec` is a list of file names or shell glob patterns that will
|
578
|
-
* matched against files in the repository's working directory. Each
|
579
|
-
* that matches will be added to the index (either updating an
|
580
|
-
* entry or adding a new entry). You can disable glob expansion
|
581
|
-
* exact matching with the `GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH`
|
578
|
+
* be matched against files in the repository's working directory. Each
|
579
|
+
* file that matches will be added to the index (either updating an
|
580
|
+
* existing entry or adding a new entry). You can disable glob expansion
|
581
|
+
* and force exact matching with the `GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH`
|
582
|
+
* flag.
|
582
583
|
*
|
583
584
|
* Files that are ignored will be skipped (unlike `git_index_add_bypath`).
|
584
585
|
* If a file is already tracked in the index, then it *will* be updated
|
585
|
-
* even if it is ignored. Pass the `GIT_INDEX_ADD_FORCE` flag to
|
586
|
-
*
|
586
|
+
* even if it is ignored. Pass the `GIT_INDEX_ADD_FORCE` flag to skip
|
587
|
+
* the checking of ignore rules.
|
587
588
|
*
|
588
589
|
* To emulate `git add -A` and generate an error if the pathspec contains
|
589
590
|
* the exact path of an ignored file (when not using FORCE), add the
|
@@ -35,6 +35,17 @@ GIT_BEGIN_DECL
|
|
35
35
|
* @return 0 or an error code
|
36
36
|
*/
|
37
37
|
GIT_EXTERN(int) git_repository_open(git_repository **out, const char *path);
|
38
|
+
/**
|
39
|
+
* Open working tree as a repository
|
40
|
+
*
|
41
|
+
* Open the working directory of the working tree as a normal
|
42
|
+
* repository that can then be worked on.
|
43
|
+
*
|
44
|
+
* @param out Output pointer containing opened repository
|
45
|
+
* @param wt Working tree to open
|
46
|
+
* @return 0 or an error code
|
47
|
+
*/
|
48
|
+
GIT_EXTERN(int) git_repository_open_from_worktree(git_repository **out, git_worktree *wt);
|
38
49
|
|
39
50
|
/**
|
40
51
|
* Create a "fake" repository to wrap an object database
|
@@ -334,6 +345,17 @@ GIT_EXTERN(int) git_repository_init_ext(
|
|
334
345
|
*/
|
335
346
|
GIT_EXTERN(int) git_repository_head(git_reference **out, git_repository *repo);
|
336
347
|
|
348
|
+
/**
|
349
|
+
* Retrieve the referenced HEAD for the worktree
|
350
|
+
*
|
351
|
+
* @param out pointer to the reference which will be retrieved
|
352
|
+
* @param repo a repository object
|
353
|
+
* @param name name of the worktree to retrieve HEAD for
|
354
|
+
* @return 0 when successful, error-code otherwise
|
355
|
+
*/
|
356
|
+
GIT_EXTERN(int) git_repository_head_for_worktree(git_reference **out, git_repository *repo,
|
357
|
+
const char *name);
|
358
|
+
|
337
359
|
/**
|
338
360
|
* Check if a repository's HEAD is detached
|
339
361
|
*
|
@@ -346,6 +368,20 @@ GIT_EXTERN(int) git_repository_head(git_reference **out, git_repository *repo);
|
|
346
368
|
*/
|
347
369
|
GIT_EXTERN(int) git_repository_head_detached(git_repository *repo);
|
348
370
|
|
371
|
+
/*
|
372
|
+
* Check if a worktree's HEAD is detached
|
373
|
+
*
|
374
|
+
* A worktree's HEAD is detached when it points directly to a
|
375
|
+
* commit instead of a branch.
|
376
|
+
*
|
377
|
+
* @param repo a repository object
|
378
|
+
* @param name name of the worktree to retrieve HEAD for
|
379
|
+
* @return 1 if HEAD is detached, 0 if its not; error code if
|
380
|
+
* there was an error
|
381
|
+
*/
|
382
|
+
GIT_EXTERN(int) git_repository_head_detached_for_worktree(git_repository *repo,
|
383
|
+
const char *name);
|
384
|
+
|
349
385
|
/**
|
350
386
|
* Check if the current branch is unborn
|
351
387
|
*
|
@@ -370,6 +406,42 @@ GIT_EXTERN(int) git_repository_head_unborn(git_repository *repo);
|
|
370
406
|
*/
|
371
407
|
GIT_EXTERN(int) git_repository_is_empty(git_repository *repo);
|
372
408
|
|
409
|
+
/**
|
410
|
+
* List of items which belong to the git repository layout
|
411
|
+
*/
|
412
|
+
typedef enum {
|
413
|
+
GIT_REPOSITORY_ITEM_GITDIR,
|
414
|
+
GIT_REPOSITORY_ITEM_WORKDIR,
|
415
|
+
GIT_REPOSITORY_ITEM_COMMONDIR,
|
416
|
+
GIT_REPOSITORY_ITEM_INDEX,
|
417
|
+
GIT_REPOSITORY_ITEM_OBJECTS,
|
418
|
+
GIT_REPOSITORY_ITEM_REFS,
|
419
|
+
GIT_REPOSITORY_ITEM_PACKED_REFS,
|
420
|
+
GIT_REPOSITORY_ITEM_REMOTES,
|
421
|
+
GIT_REPOSITORY_ITEM_CONFIG,
|
422
|
+
GIT_REPOSITORY_ITEM_INFO,
|
423
|
+
GIT_REPOSITORY_ITEM_HOOKS,
|
424
|
+
GIT_REPOSITORY_ITEM_LOGS,
|
425
|
+
GIT_REPOSITORY_ITEM_MODULES,
|
426
|
+
GIT_REPOSITORY_ITEM_WORKTREES
|
427
|
+
} git_repository_item_t;
|
428
|
+
|
429
|
+
/**
|
430
|
+
* Get the location of a specific repository file or directory
|
431
|
+
*
|
432
|
+
* This function will retrieve the path of a specific repository
|
433
|
+
* item. It will thereby honor things like the repository's
|
434
|
+
* common directory, gitdir, etc. In case a file path cannot
|
435
|
+
* exist for a given item (e.g. the working directory of a bare
|
436
|
+
* repository), an error is returned.
|
437
|
+
*
|
438
|
+
* @param out Buffer to store the path at
|
439
|
+
* @param repo Repository to get path for
|
440
|
+
* @param item The repository item for which to retrieve the path
|
441
|
+
* @return 0 on success, otherwise a negative value
|
442
|
+
*/
|
443
|
+
GIT_EXTERN(int) git_repository_item_path(git_buf *out, git_repository *repo, git_repository_item_t item);
|
444
|
+
|
373
445
|
/**
|
374
446
|
* Get the path of this repository
|
375
447
|
*
|
@@ -392,6 +464,17 @@ GIT_EXTERN(const char *) git_repository_path(git_repository *repo);
|
|
392
464
|
*/
|
393
465
|
GIT_EXTERN(const char *) git_repository_workdir(git_repository *repo);
|
394
466
|
|
467
|
+
/**
|
468
|
+
* Get the path of the shared common directory for this repository
|
469
|
+
*
|
470
|
+
* If the repository is bare is not a worktree, the git directory
|
471
|
+
* path is returned.
|
472
|
+
*
|
473
|
+
* @param repo A repository object
|
474
|
+
* @return the path to the common dir
|
475
|
+
*/
|
476
|
+
GIT_EXTERN(const char *) git_repository_commondir(git_repository *repo);
|
477
|
+
|
395
478
|
/**
|
396
479
|
* Set the path to the working directory for this repository
|
397
480
|
*
|
@@ -420,6 +503,14 @@ GIT_EXTERN(int) git_repository_set_workdir(
|
|
420
503
|
*/
|
421
504
|
GIT_EXTERN(int) git_repository_is_bare(git_repository *repo);
|
422
505
|
|
506
|
+
/**
|
507
|
+
* Check if a repository is a linked work tree
|
508
|
+
*
|
509
|
+
* @param repo Repo to test
|
510
|
+
* @return 1 if the repository is a linked work tree, 0 otherwise.
|
511
|
+
*/
|
512
|
+
GIT_EXTERN(int) git_repository_is_worktree(git_repository *repo);
|
513
|
+
|
423
514
|
/**
|
424
515
|
* Get the configuration file for this repository.
|
425
516
|
*
|