rugged 0.24.6.1 → 0.25.0b1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/rugged/rugged_repo.c +44 -36
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +10 -21
- data/vendor/libgit2/include/git2/checkout.h +0 -7
- data/vendor/libgit2/include/git2/commit.h +46 -0
- data/vendor/libgit2/include/git2/common.h +1 -16
- data/vendor/libgit2/include/git2/odb.h +47 -1
- data/vendor/libgit2/include/git2/version.h +2 -2
- data/vendor/libgit2/src/array.h +0 -40
- data/vendor/libgit2/src/blame.c +3 -8
- data/vendor/libgit2/src/blame_git.c +9 -20
- data/vendor/libgit2/src/checkout.c +5 -13
- data/vendor/libgit2/src/commit.c +132 -52
- data/vendor/libgit2/src/common.h +1 -1
- data/vendor/libgit2/src/config_cache.c +1 -2
- data/vendor/libgit2/src/config_file.c +20 -14
- data/vendor/libgit2/src/delta-apply.c +5 -36
- data/vendor/libgit2/src/delta-apply.h +0 -12
- data/vendor/libgit2/src/describe.c +1 -2
- data/vendor/libgit2/src/diff_tform.c +3 -5
- data/vendor/libgit2/src/filebuf.c +1 -6
- data/vendor/libgit2/src/global.c +8 -28
- data/vendor/libgit2/src/global.h +0 -1
- data/vendor/libgit2/src/ignore.c +19 -56
- data/vendor/libgit2/src/index.c +8 -27
- data/vendor/libgit2/src/indexer.c +7 -11
- data/vendor/libgit2/src/iterator.c +2 -2
- data/vendor/libgit2/src/merge.c +0 -1
- data/vendor/libgit2/src/mwindow.c +19 -8
- data/vendor/libgit2/src/mwindow.h +2 -1
- data/vendor/libgit2/src/object.c +6 -3
- data/vendor/libgit2/src/odb.c +188 -48
- data/vendor/libgit2/src/odb_loose.c +1 -1
- data/vendor/libgit2/src/odb_pack.c +3 -0
- data/vendor/libgit2/src/openssl_stream.c +27 -60
- data/vendor/libgit2/src/openssl_stream.h +0 -106
- data/vendor/libgit2/src/pack-objects.c +2 -4
- data/vendor/libgit2/src/pack.c +9 -5
- data/vendor/libgit2/src/posix.c +0 -7
- data/vendor/libgit2/src/posix.h +0 -1
- data/vendor/libgit2/src/push.c +6 -6
- data/vendor/libgit2/src/refdb_fs.c +0 -1
- data/vendor/libgit2/src/refs.c +0 -3
- data/vendor/libgit2/src/refspec.c +2 -4
- data/vendor/libgit2/src/remote.c +5 -15
- data/vendor/libgit2/src/repository.c +21 -29
- data/vendor/libgit2/src/settings.c +1 -23
- data/vendor/libgit2/src/stransport_stream.c +9 -15
- data/vendor/libgit2/src/submodule.c +2 -3
- data/vendor/libgit2/src/sysdir.c +47 -41
- data/vendor/libgit2/src/sysdir.h +5 -0
- data/vendor/libgit2/src/tag.c +2 -8
- data/vendor/libgit2/src/thread-utils.h +51 -5
- data/vendor/libgit2/src/transports/http.c +3 -3
- data/vendor/libgit2/src/transports/smart_pkt.c +4 -13
- data/vendor/libgit2/src/transports/smart_protocol.c +17 -61
- data/vendor/libgit2/src/tree.c +100 -83
- data/vendor/libgit2/src/tree.h +5 -4
- data/vendor/libgit2/src/unix/map.c +0 -5
- data/vendor/libgit2/src/util.c +3 -3
- data/vendor/libgit2/src/win32/map.c +5 -24
- data/vendor/libgit2/src/win32/precompiled.h +1 -1
- data/vendor/libgit2/src/win32/{thread.c → pthread.c} +80 -50
- data/vendor/libgit2/src/win32/pthread.h +92 -0
- data/vendor/libgit2/src/xdiff/xprepare.c +1 -2
- metadata +7 -8
- data/vendor/libgit2/src/unix/pthread.h +0 -54
- data/vendor/libgit2/src/win32/thread.h +0 -62
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bbcf49a26d55dbaaf0d89824638a58cf8897df0e
|
4
|
+
data.tar.gz: 5ce5dbfce098463431aad99034c49c58396d2216
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 059bab3bb87c0bd0070cffef4b33140a667cf31cbf612cab3f2b89131251d8c1e47de635e88fcda80e2b3f8d572c906e3bddc875e3937bf49a5f471db1866687
|
7
|
+
data.tar.gz: 6e119cf6ccad1b2112885fe8b78f9bd93c46ffda7e9df8ec9bc6e2003710fc95400e25ef8bf9be1e8577dc5510ad4255e08390caf110c10a9b59d5843326e672
|
data/ext/rugged/rugged_repo.c
CHANGED
@@ -1045,10 +1045,13 @@ static VALUE rb_git_repo_read_header(VALUE self, VALUE hex)
|
|
1045
1045
|
/**
|
1046
1046
|
* call-seq:
|
1047
1047
|
* repo.expand_oids([oid..], object_type = :any) -> hash
|
1048
|
+
* repo.expand_oids([oid..], object_type = [type..]) -> hash
|
1048
1049
|
*
|
1049
1050
|
* Expand a list of short oids to their full value, assuming they exist
|
1050
|
-
* in the repository. If `object_type` is passed
|
1051
|
-
*
|
1051
|
+
* in the repository. If `object_type` is passed and is an array, it must
|
1052
|
+
* be the same length as the OIDs array. If it's a single type name, all
|
1053
|
+
* OIDs will be expected to resolve to that object type. OIDs that don't
|
1054
|
+
* match the expected object types will not be expanded.
|
1052
1055
|
*
|
1053
1056
|
* Returns a hash of `{ short_oid => full_oid }` for the short OIDs which
|
1054
1057
|
* exist in the repository and match the expected object type. Missing OIDs
|
@@ -1058,59 +1061,64 @@ static VALUE rb_git_repo_expand_oids(int argc, VALUE *argv, VALUE self)
|
|
1058
1061
|
{
|
1059
1062
|
VALUE rb_result, rb_oids, rb_expected_type;
|
1060
1063
|
|
1061
|
-
git_otype expected_type = GIT_OBJ_ANY;
|
1062
|
-
|
1063
1064
|
git_repository *repo;
|
1064
|
-
git_oid oid;
|
1065
1065
|
git_odb *odb;
|
1066
|
-
|
1066
|
+
git_odb_expand_id *expand;
|
1067
|
+
long i, expand_count;
|
1068
|
+
int error;
|
1067
1069
|
|
1068
1070
|
Data_Get_Struct(self, git_repository, repo);
|
1069
|
-
|
1070
1071
|
rb_scan_args(argc, argv, "11", &rb_oids, &rb_expected_type);
|
1071
1072
|
|
1072
1073
|
Check_Type(rb_oids, T_ARRAY);
|
1073
|
-
|
1074
|
+
expand_count = RARRAY_LEN(rb_oids);
|
1075
|
+
expand = alloca(expand_count * sizeof(git_odb_expand_id));
|
1074
1076
|
|
1075
|
-
|
1076
|
-
|
1077
|
+
for (i = 0; i < expand_count; ++i) {
|
1078
|
+
VALUE rb_hex = rb_ary_entry(rb_oids, i);
|
1079
|
+
Check_Type(rb_hex, T_STRING);
|
1077
1080
|
|
1078
|
-
|
1081
|
+
rugged_exception_check(
|
1082
|
+
git_oid_fromstrn(&expand[i].id, RSTRING_PTR(rb_hex), RSTRING_LEN(rb_hex))
|
1083
|
+
);
|
1084
|
+
expand[i].length = RSTRING_LEN(rb_hex);
|
1085
|
+
}
|
1079
1086
|
|
1080
|
-
|
1081
|
-
|
1082
|
-
|
1087
|
+
if (TYPE(rb_expected_type) == T_ARRAY) {
|
1088
|
+
if (RARRAY_LEN(rb_expected_type) != expand_count)
|
1089
|
+
rb_raise(rb_eRuntimeError,
|
1090
|
+
"the `object_type` array must be the same length as the `oids` array");
|
1083
1091
|
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1092
|
+
for (i = 0; i < expand_count; ++i) {
|
1093
|
+
VALUE rb_type = rb_ary_entry(rb_expected_type, i);
|
1094
|
+
expand[i].type = rugged_otype_get(rb_type);
|
1087
1095
|
}
|
1096
|
+
} else {
|
1097
|
+
git_otype expected_type = GIT_OBJ_ANY;
|
1088
1098
|
|
1089
|
-
|
1090
|
-
|
1091
|
-
git_odb_free(odb);
|
1092
|
-
rugged_exception_check(error);
|
1093
|
-
}
|
1099
|
+
if (!NIL_P(rb_expected_type))
|
1100
|
+
expected_type = rugged_otype_get(rb_expected_type);
|
1094
1101
|
|
1095
|
-
|
1102
|
+
for (i = 0; i < expand_count; ++i)
|
1103
|
+
expand[i].type = expected_type;
|
1104
|
+
}
|
1096
1105
|
|
1097
|
-
|
1098
|
-
|
1099
|
-
size_t found_size;
|
1100
|
-
git_otype found_type;
|
1106
|
+
error = git_repository_odb(&odb, repo);
|
1107
|
+
rugged_exception_check(error);
|
1101
1108
|
|
1102
|
-
|
1103
|
-
|
1109
|
+
error = git_odb_expand_ids(odb, expand, (size_t)expand_count);
|
1110
|
+
git_odb_free(odb);
|
1111
|
+
rugged_exception_check(error);
|
1104
1112
|
|
1105
|
-
|
1106
|
-
continue;
|
1107
|
-
}
|
1113
|
+
rb_result = rb_hash_new();
|
1108
1114
|
|
1109
|
-
|
1115
|
+
for (i = 0; i < expand_count; ++i) {
|
1116
|
+
if (expand[i].length) {
|
1117
|
+
rb_hash_aset(rb_result,
|
1118
|
+
rb_ary_entry(rb_oids, i), rugged_create_oid(&expand[i].id));
|
1110
1119
|
}
|
1111
1120
|
}
|
1112
1121
|
|
1113
|
-
git_odb_free(odb);
|
1114
1122
|
return rb_result;
|
1115
1123
|
}
|
1116
1124
|
|
@@ -1945,7 +1953,7 @@ void rugged_parse_checkout_options(git_checkout_options *opts, VALUE rb_options)
|
|
1945
1953
|
|
1946
1954
|
rb_value = rb_hash_aref(rb_options, CSTR2SYM("progress"));
|
1947
1955
|
if (!NIL_P(rb_value)) {
|
1948
|
-
struct rugged_cb_payload *payload =
|
1956
|
+
struct rugged_cb_payload *payload = xmalloc(sizeof(struct rugged_cb_payload));
|
1949
1957
|
payload->rb_data = rb_value;
|
1950
1958
|
payload->exception = 0;
|
1951
1959
|
|
@@ -1955,7 +1963,7 @@ void rugged_parse_checkout_options(git_checkout_options *opts, VALUE rb_options)
|
|
1955
1963
|
|
1956
1964
|
rb_value = rb_hash_aref(rb_options, CSTR2SYM("notify"));
|
1957
1965
|
if (!NIL_P(rb_value)) {
|
1958
|
-
struct rugged_cb_payload *payload =
|
1966
|
+
struct rugged_cb_payload *payload = xmalloc(sizeof(struct rugged_cb_payload));
|
1959
1967
|
payload->rb_data = rb_value;
|
1960
1968
|
payload->exception = 0;
|
1961
1969
|
|
data/lib/rugged/version.rb
CHANGED
@@ -40,7 +40,7 @@ OPTION( USE_ICONV "Link with and use iconv library" OFF )
|
|
40
40
|
OPTION( USE_SSH "Link with libssh to enable SSH support" ON )
|
41
41
|
OPTION( USE_GSSAPI "Link with libgssapi for SPNEGO auth" OFF )
|
42
42
|
OPTION( VALGRIND "Configure build for valgrind" OFF )
|
43
|
-
OPTION( CURL "
|
43
|
+
OPTION( CURL "User curl for HTTP if available" ON)
|
44
44
|
OPTION( DEBUG_POOL "Enable debug pool allocator" OFF )
|
45
45
|
|
46
46
|
IF(DEBUG_POOL)
|
@@ -109,7 +109,7 @@ ELSE ()
|
|
109
109
|
ENDIF()
|
110
110
|
|
111
111
|
IF (HAVE_STRUCT_STAT_NSEC OR WIN32)
|
112
|
-
OPTION( USE_NSEC "Care about sub-second file mtimes and ctimes"
|
112
|
+
OPTION( USE_NSEC "Care about sub-second file mtimes and ctimes" ON )
|
113
113
|
ENDIF()
|
114
114
|
|
115
115
|
# This variable will contain the libraries we need to put into
|
@@ -151,10 +151,6 @@ FUNCTION(TARGET_OS_LIBRARIES target)
|
|
151
151
|
TARGET_LINK_LIBRARIES(${target} socket nsl)
|
152
152
|
LIST(APPEND LIBGIT2_PC_LIBS "-lsocket" "-lnsl")
|
153
153
|
SET(LIBGIT2_PC_LIBS ${LIBGIT2_PC_LIBS} PARENT_SCOPE)
|
154
|
-
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Haiku")
|
155
|
-
TARGET_LINK_LIBRARIES(${target} network)
|
156
|
-
LIST(APPEND LIBGIT2_PC_LIBS "-lnetwork")
|
157
|
-
SET(LIBGIT2_PC_LIBS ${LIBGIT2_PC_LIBS} PARENT_SCOPE)
|
158
154
|
ENDIF()
|
159
155
|
CHECK_LIBRARY_EXISTS(rt clock_gettime "time.h" NEED_LIBRT)
|
160
156
|
IF(NEED_LIBRT)
|
@@ -165,8 +161,6 @@ FUNCTION(TARGET_OS_LIBRARIES target)
|
|
165
161
|
|
166
162
|
IF(THREADSAFE)
|
167
163
|
TARGET_LINK_LIBRARIES(${target} ${CMAKE_THREAD_LIBS_INIT})
|
168
|
-
LIST(APPEND LIBGIT2_PC_LIBS ${CMAKE_THREAD_LIBS_INIT})
|
169
|
-
SET(LIBGIT2_PC_LIBS ${LIBGIT2_PC_LIBS} PARENT_SCOPE)
|
170
164
|
ENDIF()
|
171
165
|
ENDFUNCTION()
|
172
166
|
|
@@ -286,7 +280,6 @@ ELSE ()
|
|
286
280
|
IF (CURL_FOUND)
|
287
281
|
ADD_DEFINITIONS(-DGIT_CURL)
|
288
282
|
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
|
289
|
-
LINK_DIRECTORIES(${CURL_LIBRARY_DIRS})
|
290
283
|
LINK_LIBRARIES(${CURL_LIBRARIES})
|
291
284
|
LIST(APPEND LIBGIT2_PC_LIBS ${CURL_LDFLAGS})
|
292
285
|
ENDIF()
|
@@ -419,7 +412,7 @@ IF (MSVC)
|
|
419
412
|
# /MTd - Statically link the multithreaded debug version of the CRT
|
420
413
|
# /MDd - Dynamically link the multithreaded debug version of the CRT
|
421
414
|
# /RTC1 - Run time checks
|
422
|
-
SET(CMAKE_C_FLAGS_DEBUG "
|
415
|
+
SET(CMAKE_C_FLAGS_DEBUG "/Zi /Od /D_DEBUG /RTC1 ${CRT_FLAG_DEBUG}")
|
423
416
|
|
424
417
|
# /DNDEBUG - Disables asserts
|
425
418
|
# /MT - Statically link the multithreaded release version of the CRT
|
@@ -471,22 +464,20 @@ ELSE ()
|
|
471
464
|
ENDIF()
|
472
465
|
|
473
466
|
IF (WIN32 AND NOT CYGWIN)
|
474
|
-
SET(CMAKE_C_FLAGS_DEBUG "
|
467
|
+
SET(CMAKE_C_FLAGS_DEBUG "-D_DEBUG")
|
475
468
|
ENDIF ()
|
476
469
|
|
477
|
-
IF (MINGW
|
470
|
+
IF (MINGW) # MinGW always does PIC and complains if we tell it to
|
478
471
|
STRING(REGEX REPLACE "-fPIC" "" CMAKE_SHARED_LIBRARY_C_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS}")
|
479
|
-
ELSEIF (BUILD_SHARED_LIBS)
|
480
|
-
ADD_C_FLAG_IF_SUPPORTED(-fvisibility=hidden)
|
481
|
-
|
482
|
-
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
|
483
|
-
ENDIF ()
|
484
|
-
|
485
|
-
IF (MINGW)
|
486
472
|
# MinGW >= 3.14 uses the C99-style stdio functions
|
487
473
|
# automatically, but forks like mingw-w64 still want
|
488
474
|
# us to define this in order to use them
|
489
475
|
ADD_DEFINITIONS(-D__USE_MINGW_ANSI_STDIO=1)
|
476
|
+
|
477
|
+
ELSEIF (BUILD_SHARED_LIBS)
|
478
|
+
ADD_C_FLAG_IF_SUPPORTED(-fvisibility=hidden)
|
479
|
+
|
480
|
+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
|
490
481
|
ENDIF ()
|
491
482
|
|
492
483
|
ADD_C_FLAG_IF_SUPPORTED(-Wdocumentation)
|
@@ -617,8 +608,6 @@ IF (SONAME)
|
|
617
608
|
IF (LIBGIT2_FILENAME)
|
618
609
|
ADD_DEFINITIONS(-DLIBGIT2_FILENAME=\"${LIBGIT2_FILENAME}\")
|
619
610
|
SET_TARGET_PROPERTIES(git2 PROPERTIES OUTPUT_NAME ${LIBGIT2_FILENAME})
|
620
|
-
ELSEIF (DEFINED LIBGIT2_PREFIX)
|
621
|
-
SET_TARGET_PROPERTIES(git2 PROPERTIES PREFIX "${LIBGIT2_PREFIX}")
|
622
611
|
ENDIF()
|
623
612
|
ENDIF()
|
624
613
|
STRING(REPLACE ";" " " LIBGIT2_PC_LIBS "${LIBGIT2_PC_LIBS}")
|
@@ -313,13 +313,6 @@ GIT_EXTERN(int) git_checkout_init_options(
|
|
313
313
|
* Updates files in the index and the working tree to match the content of
|
314
314
|
* the commit pointed at by HEAD.
|
315
315
|
*
|
316
|
-
* Note that this is _not_ the correct mechanism used to switch branches;
|
317
|
-
* do not change your `HEAD` and then call this method, that would leave
|
318
|
-
* you with checkout conflicts since your working directory would then
|
319
|
-
* appear to be dirty. Instead, checkout the target of the branch and
|
320
|
-
* then update `HEAD` using `git_repository_set_head` to point to the
|
321
|
-
* branch you checked out.
|
322
|
-
*
|
323
316
|
* @param repo repository to check out (must be non-bare)
|
324
317
|
* @param opts specifies checkout options (may be NULL)
|
325
318
|
* @return 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non
|
@@ -394,6 +394,52 @@ GIT_EXTERN(int) git_commit_amend(
|
|
394
394
|
const char *message,
|
395
395
|
const git_tree *tree);
|
396
396
|
|
397
|
+
/**
|
398
|
+
* Create a commit and write it into a buffer
|
399
|
+
*
|
400
|
+
* Create a commit as with `git_commit_create()` but instead of
|
401
|
+
* writing it to the objectdb, write the contents of the object into a
|
402
|
+
* buffer.
|
403
|
+
*
|
404
|
+
* @param out the buffer into which to write the commit object content
|
405
|
+
*
|
406
|
+
* @param repo Repository where the referenced tree and parents live
|
407
|
+
*
|
408
|
+
* @param author Signature with author and author time of commit
|
409
|
+
*
|
410
|
+
* @param committer Signature with committer and * commit time of commit
|
411
|
+
*
|
412
|
+
* @param message_encoding The encoding for the message in the
|
413
|
+
* commit, represented with a standard encoding name.
|
414
|
+
* E.g. "UTF-8". If NULL, no encoding header is written and
|
415
|
+
* UTF-8 is assumed.
|
416
|
+
*
|
417
|
+
* @param message Full message for this commit
|
418
|
+
*
|
419
|
+
* @param tree An instance of a `git_tree` object that will
|
420
|
+
* be used as the tree for the commit. This tree object must
|
421
|
+
* also be owned by the given `repo`.
|
422
|
+
*
|
423
|
+
* @param parent_count Number of parents for this commit
|
424
|
+
*
|
425
|
+
* @param parents Array of `parent_count` pointers to `git_commit`
|
426
|
+
* objects that will be used as the parents for this commit. This
|
427
|
+
* array may be NULL if `parent_count` is 0 (root commit). All the
|
428
|
+
* given commits must be owned by the `repo`.
|
429
|
+
*
|
430
|
+
* @return 0 or an error code
|
431
|
+
*/
|
432
|
+
GIT_EXTERN(int) git_commit_create_buffer(
|
433
|
+
git_buf *out,
|
434
|
+
git_repository *repo,
|
435
|
+
const git_signature *author,
|
436
|
+
const git_signature *committer,
|
437
|
+
const char *message_encoding,
|
438
|
+
const char *message,
|
439
|
+
const git_tree *tree,
|
440
|
+
size_t parent_count,
|
441
|
+
const git_commit *parents[]);
|
442
|
+
|
397
443
|
/** @} */
|
398
444
|
GIT_END_DECL
|
399
445
|
#endif
|
@@ -24,19 +24,10 @@
|
|
24
24
|
GIT_BEGIN_DECL
|
25
25
|
# include "inttypes.h"
|
26
26
|
GIT_END_DECL
|
27
|
-
|
28
|
-
#elif !defined(__CLANG_INTTYPES_H)
|
27
|
+
#else
|
29
28
|
# include <inttypes.h>
|
30
29
|
#endif
|
31
30
|
|
32
|
-
#ifdef DOCURIUM
|
33
|
-
/*
|
34
|
-
* This is so clang's doc parser acknowledges comments on functions
|
35
|
-
* with size_t parameters.
|
36
|
-
*/
|
37
|
-
typedef size_t size_t;
|
38
|
-
#endif
|
39
|
-
|
40
31
|
/** Declare a public function exported for application use. */
|
41
32
|
#if __GNUC__ >= 4
|
42
33
|
# define GIT_EXTERN(type) extern \
|
@@ -157,7 +148,6 @@ typedef enum {
|
|
157
148
|
GIT_OPT_SET_SSL_CERT_LOCATIONS,
|
158
149
|
GIT_OPT_SET_USER_AGENT,
|
159
150
|
GIT_OPT_ENABLE_STRICT_OBJECT_CREATION,
|
160
|
-
GIT_OPT_SET_SSL_CIPHERS,
|
161
151
|
} git_libgit2_opt_t;
|
162
152
|
|
163
153
|
/**
|
@@ -269,11 +259,6 @@ typedef enum {
|
|
269
259
|
* > example, when this is enabled, the parent(s) and tree inputs
|
270
260
|
* > will be validated when creating a new commit. This defaults
|
271
261
|
* > to disabled.
|
272
|
-
* * opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers)
|
273
|
-
*
|
274
|
-
* > Set the SSL ciphers use for HTTPS connections.
|
275
|
-
* >
|
276
|
-
* > - `ciphers` is the list of ciphers that are eanbled.
|
277
262
|
*
|
278
263
|
* @param option Option key
|
279
264
|
* @param ... value to set the option
|
@@ -10,6 +10,7 @@
|
|
10
10
|
#include "common.h"
|
11
11
|
#include "types.h"
|
12
12
|
#include "oid.h"
|
13
|
+
#include "oidarray.h"
|
13
14
|
|
14
15
|
/**
|
15
16
|
* @file git2/odb.h
|
@@ -159,7 +160,8 @@ GIT_EXTERN(int) git_odb_read_header(size_t *len_out, git_otype *type_out, git_od
|
|
159
160
|
GIT_EXTERN(int) git_odb_exists(git_odb *db, const git_oid *id);
|
160
161
|
|
161
162
|
/**
|
162
|
-
* Determine if
|
163
|
+
* Determine if an object can be found in the object database by an
|
164
|
+
* abbreviated object ID.
|
163
165
|
*
|
164
166
|
* @param out The full OID of the found object if just one is found.
|
165
167
|
* @param db The database to be searched for the given object.
|
@@ -171,6 +173,50 @@ GIT_EXTERN(int) git_odb_exists(git_odb *db, const git_oid *id);
|
|
171
173
|
GIT_EXTERN(int) git_odb_exists_prefix(
|
172
174
|
git_oid *out, git_odb *db, const git_oid *short_id, size_t len);
|
173
175
|
|
176
|
+
/**
|
177
|
+
* The information about object IDs to query in `git_odb_expand_ids`,
|
178
|
+
* which will be populated upon return.
|
179
|
+
*/
|
180
|
+
typedef struct git_odb_expand_id {
|
181
|
+
/** The object ID to expand */
|
182
|
+
git_oid id;
|
183
|
+
|
184
|
+
/**
|
185
|
+
* The length of the object ID (in nibbles, or packets of 4 bits; the
|
186
|
+
* number of hex characters)
|
187
|
+
* */
|
188
|
+
unsigned short length;
|
189
|
+
|
190
|
+
/**
|
191
|
+
* The (optional) type of the object to search for; leave as `0` or set
|
192
|
+
* to `GIT_OBJ_ANY` to query for any object matching the ID.
|
193
|
+
*/
|
194
|
+
git_otype type;
|
195
|
+
} git_odb_expand_id;
|
196
|
+
|
197
|
+
/**
|
198
|
+
* Determine if one or more objects can be found in the object database
|
199
|
+
* by their abbreviated object ID and type. The given array will be
|
200
|
+
* updated in place: for each abbreviated ID that is unique in the
|
201
|
+
* database, and of the given type (if specified), the full object ID,
|
202
|
+
* object ID length (`GIT_OID_HEXSZ`) and type will be written back to
|
203
|
+
* the array. For IDs that are not found (or are ambiguous), the
|
204
|
+
* array entry will be zeroed.
|
205
|
+
*
|
206
|
+
* Note that since this function operates on multiple objects, the
|
207
|
+
* underlying database will not be asked to be reloaded if an object is
|
208
|
+
* not found (which is unlike other object database operations.)
|
209
|
+
*
|
210
|
+
* @param db The database to be searched for the given objects.
|
211
|
+
* @param ids An array of short object IDs to search for
|
212
|
+
* @param count The length of the `ids` array
|
213
|
+
* @return 0 on success or an error code on failure
|
214
|
+
*/
|
215
|
+
GIT_EXTERN(int) git_odb_expand_ids(
|
216
|
+
git_odb *db,
|
217
|
+
git_odb_expand_id *ids,
|
218
|
+
size_t count);
|
219
|
+
|
174
220
|
/**
|
175
221
|
* Refresh the object database to load newly added files.
|
176
222
|
*
|
@@ -7,10 +7,10 @@
|
|
7
7
|
#ifndef INCLUDE_git_version_h__
|
8
8
|
#define INCLUDE_git_version_h__
|
9
9
|
|
10
|
-
#define LIBGIT2_VERSION "0.24.
|
10
|
+
#define LIBGIT2_VERSION "0.24.0"
|
11
11
|
#define LIBGIT2_VER_MAJOR 0
|
12
12
|
#define LIBGIT2_VER_MINOR 24
|
13
|
-
#define LIBGIT2_VER_REVISION
|
13
|
+
#define LIBGIT2_VER_REVISION 0
|
14
14
|
#define LIBGIT2_VER_PATCH 0
|
15
15
|
|
16
16
|
#define LIBGIT2_SOVERSION 24
|
data/vendor/libgit2/src/array.h
CHANGED
@@ -82,44 +82,4 @@ on_oom:
|
|
82
82
|
|
83
83
|
#define git_array_valid_index(a, i) ((i) < (a).size)
|
84
84
|
|
85
|
-
#define git_array_foreach(a, i, element) \
|
86
|
-
for ((i) = 0; (i) < (a).size && ((element) = &(a).ptr[(i)]); (i)++)
|
87
|
-
|
88
|
-
|
89
|
-
GIT_INLINE(int) git_array__search(
|
90
|
-
size_t *out,
|
91
|
-
void *array_ptr,
|
92
|
-
size_t item_size,
|
93
|
-
size_t array_len,
|
94
|
-
int (*compare)(const void *, const void *),
|
95
|
-
const void *key)
|
96
|
-
{
|
97
|
-
size_t lim;
|
98
|
-
unsigned char *part, *array = array_ptr, *base = array_ptr;
|
99
|
-
int cmp = -1;
|
100
|
-
|
101
|
-
for (lim = array_len; lim != 0; lim >>= 1) {
|
102
|
-
part = base + (lim >> 1) * item_size;
|
103
|
-
cmp = (*compare)(key, part);
|
104
|
-
|
105
|
-
if (cmp == 0) {
|
106
|
-
base = part;
|
107
|
-
break;
|
108
|
-
}
|
109
|
-
if (cmp > 0) { /* key > p; take right partition */
|
110
|
-
base = part + 1 * item_size;
|
111
|
-
lim--;
|
112
|
-
} /* else take left partition */
|
113
|
-
}
|
114
|
-
|
115
|
-
if (out)
|
116
|
-
*out = (base - array) / item_size;
|
117
|
-
|
118
|
-
return (cmp == 0) ? 0 : GIT_ENOTFOUND;
|
119
|
-
}
|
120
|
-
|
121
|
-
#define git_array_search(out, a, cmp, key) \
|
122
|
-
git_array__search(out, (a).ptr, sizeof(*(a).ptr), (a).size, \
|
123
|
-
(cmp), (key))
|
124
|
-
|
125
85
|
#endif
|