rugged 0.24.0 → 0.24.5
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 +7 -0
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +20 -9
- data/vendor/libgit2/deps/http-parser/http_parser.c +5 -2
- data/vendor/libgit2/include/git2/checkout.h +7 -0
- data/vendor/libgit2/include/git2/common.h +16 -1
- data/vendor/libgit2/include/git2/version.h +2 -2
- data/vendor/libgit2/src/array.h +40 -0
- data/vendor/libgit2/src/blame.c +8 -3
- data/vendor/libgit2/src/blame_git.c +20 -9
- data/vendor/libgit2/src/checkout.c +13 -5
- data/vendor/libgit2/src/commit.c +5 -4
- data/vendor/libgit2/src/common.h +1 -1
- data/vendor/libgit2/src/config_cache.c +2 -1
- data/vendor/libgit2/src/config_file.c +14 -20
- data/vendor/libgit2/src/delta-apply.c +36 -5
- data/vendor/libgit2/src/delta-apply.h +12 -0
- data/vendor/libgit2/src/describe.c +2 -1
- data/vendor/libgit2/src/diff_tform.c +5 -3
- data/vendor/libgit2/src/filebuf.c +6 -1
- data/vendor/libgit2/src/global.c +28 -8
- data/vendor/libgit2/src/global.h +1 -0
- data/vendor/libgit2/src/ignore.c +56 -19
- data/vendor/libgit2/src/index.c +27 -8
- data/vendor/libgit2/src/indexer.c +11 -7
- data/vendor/libgit2/src/iterator.c +2 -2
- data/vendor/libgit2/src/merge.c +1 -0
- data/vendor/libgit2/src/mwindow.c +20 -21
- data/vendor/libgit2/src/mwindow.h +1 -2
- data/vendor/libgit2/src/object.c +3 -6
- data/vendor/libgit2/src/odb.c +11 -15
- data/vendor/libgit2/src/odb.h +2 -1
- data/vendor/libgit2/src/odb_loose.c +13 -9
- data/vendor/libgit2/src/odb_pack.c +5 -6
- data/vendor/libgit2/src/oid.h +9 -0
- data/vendor/libgit2/src/openssl_stream.c +60 -27
- data/vendor/libgit2/src/openssl_stream.h +106 -0
- data/vendor/libgit2/src/pack-objects.c +4 -2
- data/vendor/libgit2/src/pack.c +10 -14
- data/vendor/libgit2/src/posix.c +7 -0
- data/vendor/libgit2/src/posix.h +1 -0
- data/vendor/libgit2/src/push.c +6 -6
- data/vendor/libgit2/src/refdb_fs.c +1 -0
- data/vendor/libgit2/src/refs.c +3 -0
- data/vendor/libgit2/src/refspec.c +4 -2
- data/vendor/libgit2/src/remote.c +15 -5
- data/vendor/libgit2/src/repository.c +29 -21
- data/vendor/libgit2/src/settings.c +23 -1
- data/vendor/libgit2/src/stransport_stream.c +15 -9
- data/vendor/libgit2/src/submodule.c +3 -2
- data/vendor/libgit2/src/sysdir.c +41 -47
- data/vendor/libgit2/src/sysdir.h +0 -5
- data/vendor/libgit2/src/tag.c +8 -2
- data/vendor/libgit2/src/thread-utils.h +5 -51
- data/vendor/libgit2/src/transport.c +2 -0
- data/vendor/libgit2/src/transports/http.c +2 -1
- data/vendor/libgit2/src/transports/smart_pkt.c +1 -0
- data/vendor/libgit2/src/transports/smart_protocol.c +72 -17
- data/vendor/libgit2/src/transports/ssh.c +32 -17
- data/vendor/libgit2/src/tree.c +83 -100
- data/vendor/libgit2/src/tree.h +4 -5
- data/vendor/libgit2/src/unix/map.c +5 -0
- data/vendor/libgit2/src/unix/pthread.h +54 -0
- data/vendor/libgit2/src/util.c +3 -3
- data/vendor/libgit2/src/win32/map.c +24 -5
- data/vendor/libgit2/src/win32/precompiled.h +1 -1
- data/vendor/libgit2/src/win32/{pthread.c → thread.c} +50 -80
- data/vendor/libgit2/src/win32/thread.h +62 -0
- data/vendor/libgit2/src/xdiff/xprepare.c +2 -1
- metadata +384 -394
- data/vendor/libgit2/src/win32/pthread.h +0 -92
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 73d29b4faaac41e9ef1e93c0192e1c8827eaa745
|
4
|
+
data.tar.gz: dbe2d750a922c46a144b0e17f93d6ee18d451c32
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fd5ebf3e609e2b749fc98938184a59eebaaeb6b6791763083d97e0044f1dec29e50835c4a448a52ad1349fa71b73ffd01e7af6042e3fe0cc5bf3a4dff8e99650
|
7
|
+
data.tar.gz: c52fb2d126fccd0cb438bf07e1c3c0729d6fa9b323949383d04a4dd57f1733582b4a104d66029e410350fd9182506310e14964798832be3734c4b37aa744e021
|
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 "Use curl for HTTP if available" ON)
|
44
44
|
OPTION( DEBUG_POOL "Enable debug pool allocator" OFF )
|
45
45
|
|
46
46
|
IF(DEBUG_POOL)
|
@@ -151,6 +151,10 @@ 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)
|
154
158
|
ENDIF()
|
155
159
|
CHECK_LIBRARY_EXISTS(rt clock_gettime "time.h" NEED_LIBRT)
|
156
160
|
IF(NEED_LIBRT)
|
@@ -161,6 +165,8 @@ FUNCTION(TARGET_OS_LIBRARIES target)
|
|
161
165
|
|
162
166
|
IF(THREADSAFE)
|
163
167
|
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)
|
164
170
|
ENDIF()
|
165
171
|
ENDFUNCTION()
|
166
172
|
|
@@ -280,6 +286,7 @@ ELSE ()
|
|
280
286
|
IF (CURL_FOUND)
|
281
287
|
ADD_DEFINITIONS(-DGIT_CURL)
|
282
288
|
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
|
289
|
+
LINK_DIRECTORIES(${CURL_LIBRARY_DIRS})
|
283
290
|
LINK_LIBRARIES(${CURL_LIBRARIES})
|
284
291
|
LIST(APPEND LIBGIT2_PC_LIBS ${CURL_LDFLAGS})
|
285
292
|
ENDIF()
|
@@ -412,7 +419,7 @@ IF (MSVC)
|
|
412
419
|
# /MTd - Statically link the multithreaded debug version of the CRT
|
413
420
|
# /MDd - Dynamically link the multithreaded debug version of the CRT
|
414
421
|
# /RTC1 - Run time checks
|
415
|
-
SET(CMAKE_C_FLAGS_DEBUG "/Zi /Od /D_DEBUG /RTC1 ${CRT_FLAG_DEBUG}")
|
422
|
+
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /Zi /Od /D_DEBUG /RTC1 ${CRT_FLAG_DEBUG}")
|
416
423
|
|
417
424
|
# /DNDEBUG - Disables asserts
|
418
425
|
# /MT - Statically link the multithreaded release version of the CRT
|
@@ -464,22 +471,24 @@ ELSE ()
|
|
464
471
|
ENDIF()
|
465
472
|
|
466
473
|
IF (WIN32 AND NOT CYGWIN)
|
467
|
-
SET(CMAKE_C_FLAGS_DEBUG "-D_DEBUG")
|
474
|
+
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
|
468
475
|
ENDIF ()
|
469
476
|
|
470
|
-
IF (MINGW) # MinGW always
|
477
|
+
IF (MINGW OR MSYS) # MinGW and MSYS always do PIC and complain if we tell them to
|
471
478
|
STRING(REGEX REPLACE "-fPIC" "" CMAKE_SHARED_LIBRARY_C_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS}")
|
472
|
-
# MinGW >= 3.14 uses the C99-style stdio functions
|
473
|
-
# automatically, but forks like mingw-w64 still want
|
474
|
-
# us to define this in order to use them
|
475
|
-
ADD_DEFINITIONS(-D__USE_MINGW_ANSI_STDIO=1)
|
476
|
-
|
477
479
|
ELSEIF (BUILD_SHARED_LIBS)
|
478
480
|
ADD_C_FLAG_IF_SUPPORTED(-fvisibility=hidden)
|
479
481
|
|
480
482
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
|
481
483
|
ENDIF ()
|
482
484
|
|
485
|
+
IF (MINGW)
|
486
|
+
# MinGW >= 3.14 uses the C99-style stdio functions
|
487
|
+
# automatically, but forks like mingw-w64 still want
|
488
|
+
# us to define this in order to use them
|
489
|
+
ADD_DEFINITIONS(-D__USE_MINGW_ANSI_STDIO=1)
|
490
|
+
ENDIF ()
|
491
|
+
|
483
492
|
ADD_C_FLAG_IF_SUPPORTED(-Wdocumentation)
|
484
493
|
ADD_C_FLAG_IF_SUPPORTED(-Wno-missing-field-initializers)
|
485
494
|
ADD_C_FLAG_IF_SUPPORTED(-Wstrict-aliasing=2)
|
@@ -608,6 +617,8 @@ IF (SONAME)
|
|
608
617
|
IF (LIBGIT2_FILENAME)
|
609
618
|
ADD_DEFINITIONS(-DLIBGIT2_FILENAME=\"${LIBGIT2_FILENAME}\")
|
610
619
|
SET_TARGET_PROPERTIES(git2 PROPERTIES OUTPUT_NAME ${LIBGIT2_FILENAME})
|
620
|
+
ELSEIF (DEFINED LIBGIT2_PREFIX)
|
621
|
+
SET_TARGET_PROPERTIES(git2 PROPERTIES PREFIX "${LIBGIT2_PREFIX}")
|
611
622
|
ENDIF()
|
612
623
|
ENDIF()
|
613
624
|
STRING(REPLACE ";" " " LIBGIT2_PC_LIBS "${LIBGIT2_PC_LIBS}")
|
@@ -99,7 +99,7 @@ do { \
|
|
99
99
|
FOR##_mark = NULL; \
|
100
100
|
} \
|
101
101
|
} while (0)
|
102
|
-
|
102
|
+
|
103
103
|
/* Run the data callback FOR and consume the current byte */
|
104
104
|
#define CALLBACK_DATA(FOR) \
|
105
105
|
CALLBACK_DATA_(FOR, p - FOR##_mark, p - data + 1)
|
@@ -444,6 +444,9 @@ parse_url_char(enum state s, const char ch)
|
|
444
444
|
return s_req_path;
|
445
445
|
}
|
446
446
|
|
447
|
+
/* The schema must start with an alpha character. After that, it may
|
448
|
+
* consist of digits, '+', '-' or '.', followed by a ':'.
|
449
|
+
*/
|
447
450
|
if (IS_ALPHA(ch)) {
|
448
451
|
return s_req_schema;
|
449
452
|
}
|
@@ -451,7 +454,7 @@ parse_url_char(enum state s, const char ch)
|
|
451
454
|
break;
|
452
455
|
|
453
456
|
case s_req_schema:
|
454
|
-
if (
|
457
|
+
if (IS_ALPHANUM(ch) || ch == '+' || ch == '-' || ch == '.') {
|
455
458
|
return s;
|
456
459
|
}
|
457
460
|
|
@@ -313,6 +313,13 @@ 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
|
+
*
|
316
323
|
* @param repo repository to check out (must be non-bare)
|
317
324
|
* @param opts specifies checkout options (may be NULL)
|
318
325
|
* @return 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non
|
@@ -24,10 +24,19 @@
|
|
24
24
|
GIT_BEGIN_DECL
|
25
25
|
# include "inttypes.h"
|
26
26
|
GIT_END_DECL
|
27
|
-
|
27
|
+
/** This check is needed for importing this file in an iOS/OS X framework throws an error in Xcode otherwise.*/
|
28
|
+
#elif !defined(__CLANG_INTTYPES_H)
|
28
29
|
# include <inttypes.h>
|
29
30
|
#endif
|
30
31
|
|
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
|
+
|
31
40
|
/** Declare a public function exported for application use. */
|
32
41
|
#if __GNUC__ >= 4
|
33
42
|
# define GIT_EXTERN(type) extern \
|
@@ -148,6 +157,7 @@ typedef enum {
|
|
148
157
|
GIT_OPT_SET_SSL_CERT_LOCATIONS,
|
149
158
|
GIT_OPT_SET_USER_AGENT,
|
150
159
|
GIT_OPT_ENABLE_STRICT_OBJECT_CREATION,
|
160
|
+
GIT_OPT_SET_SSL_CIPHERS,
|
151
161
|
} git_libgit2_opt_t;
|
152
162
|
|
153
163
|
/**
|
@@ -259,6 +269,11 @@ typedef enum {
|
|
259
269
|
* > example, when this is enabled, the parent(s) and tree inputs
|
260
270
|
* > will be validated when creating a new commit. This defaults
|
261
271
|
* > 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.
|
262
277
|
*
|
263
278
|
* @param option Option key
|
264
279
|
* @param ... value to set the option
|
@@ -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.5"
|
11
11
|
#define LIBGIT2_VER_MAJOR 0
|
12
12
|
#define LIBGIT2_VER_MINOR 24
|
13
|
-
#define LIBGIT2_VER_REVISION
|
13
|
+
#define LIBGIT2_VER_REVISION 5
|
14
14
|
#define LIBGIT2_VER_PATCH 0
|
15
15
|
|
16
16
|
#define LIBGIT2_SOVERSION 24
|
data/vendor/libgit2/src/array.h
CHANGED
@@ -82,4 +82,44 @@ 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
|
+
|
85
125
|
#endif
|
data/vendor/libgit2/src/blame.c
CHANGED
@@ -178,7 +178,7 @@ const git_blame_hunk *git_blame_get_hunk_byline(git_blame *blame, size_t lineno)
|
|
178
178
|
return NULL;
|
179
179
|
}
|
180
180
|
|
181
|
-
static
|
181
|
+
static int normalize_options(
|
182
182
|
git_blame_options *out,
|
183
183
|
const git_blame_options *in,
|
184
184
|
git_repository *repo)
|
@@ -190,7 +190,9 @@ static void normalize_options(
|
|
190
190
|
|
191
191
|
/* No newest_commit => HEAD */
|
192
192
|
if (git_oid_iszero(&out->newest_commit)) {
|
193
|
-
git_reference_name_to_id(&out->newest_commit, repo, "HEAD")
|
193
|
+
if (git_reference_name_to_id(&out->newest_commit, repo, "HEAD") < 0) {
|
194
|
+
return -1;
|
195
|
+
}
|
194
196
|
}
|
195
197
|
|
196
198
|
/* min_line 0 really means 1 */
|
@@ -204,6 +206,8 @@ static void normalize_options(
|
|
204
206
|
out->flags |= GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES;
|
205
207
|
if (out->flags & GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES)
|
206
208
|
out->flags |= GIT_BLAME_TRACK_COPIES_SAME_FILE;
|
209
|
+
|
210
|
+
return 0;
|
207
211
|
}
|
208
212
|
|
209
213
|
static git_blame_hunk *split_hunk_in_vector(
|
@@ -362,7 +366,8 @@ int git_blame_file(
|
|
362
366
|
git_blame *blame = NULL;
|
363
367
|
|
364
368
|
assert(out && repo && path);
|
365
|
-
normalize_options(&normOptions, options, repo)
|
369
|
+
if ((error = normalize_options(&normOptions, options, repo)) < 0)
|
370
|
+
goto on_error;
|
366
371
|
|
367
372
|
blame = git_blame__alloc(repo, normOptions, path);
|
368
373
|
GITERR_CHECK_ALLOC(blame);
|
@@ -37,25 +37,27 @@ static void origin_decref(git_blame__origin *o)
|
|
37
37
|
static int make_origin(git_blame__origin **out, git_commit *commit, const char *path)
|
38
38
|
{
|
39
39
|
git_blame__origin *o;
|
40
|
+
git_object *blob;
|
40
41
|
size_t path_len = strlen(path), alloc_len;
|
41
42
|
int error = 0;
|
42
43
|
|
44
|
+
if ((error = git_object_lookup_bypath(&blob, (git_object*)commit,
|
45
|
+
path, GIT_OBJ_BLOB)) < 0)
|
46
|
+
return error;
|
47
|
+
|
43
48
|
GITERR_CHECK_ALLOC_ADD(&alloc_len, sizeof(*o), path_len);
|
44
49
|
GITERR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 1);
|
45
50
|
o = git__calloc(1, alloc_len);
|
46
51
|
GITERR_CHECK_ALLOC(o);
|
47
52
|
|
48
53
|
o->commit = commit;
|
54
|
+
o->blob = (git_blob *) blob;
|
49
55
|
o->refcnt = 1;
|
50
56
|
strcpy(o->path, path);
|
51
57
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
} else {
|
56
|
-
origin_decref(o);
|
57
|
-
}
|
58
|
-
return error;
|
58
|
+
*out = o;
|
59
|
+
|
60
|
+
return 0;
|
59
61
|
}
|
60
62
|
|
61
63
|
/* Locate an existing origin or create a new one. */
|
@@ -525,11 +527,20 @@ static int pass_blame(git_blame *blame, git_blame__origin *origin, uint32_t opt)
|
|
525
527
|
if (sg_origin[i])
|
526
528
|
continue;
|
527
529
|
|
528
|
-
git_commit_parent(&p, origin->commit, i)
|
530
|
+
if ((error = git_commit_parent(&p, origin->commit, i)) < 0)
|
531
|
+
goto finish;
|
529
532
|
porigin = find_origin(blame, p, origin);
|
530
533
|
|
531
|
-
if (!porigin)
|
534
|
+
if (!porigin) {
|
535
|
+
/*
|
536
|
+
* We only have to decrement the parent's
|
537
|
+
* reference count when no porigin has
|
538
|
+
* been created, as otherwise the commit
|
539
|
+
* is assigned to the created object.
|
540
|
+
*/
|
541
|
+
git_commit_free(p);
|
532
542
|
continue;
|
543
|
+
}
|
533
544
|
if (porigin->blob && origin->blob &&
|
534
545
|
!git_oid_cmp(git_blob_id(porigin->blob), git_blob_id(origin->blob))) {
|
535
546
|
pass_whole_blame(blame, origin, porigin);
|
@@ -464,7 +464,8 @@ static int checkout_action_with_wd(
|
|
464
464
|
*action = CHECKOUT_ACTION_IF(SAFE, REMOVE, NONE);
|
465
465
|
break;
|
466
466
|
case GIT_DELTA_MODIFIED: /* case 16, 17, 18 (or 36 but not really) */
|
467
|
-
if (
|
467
|
+
if (wd->mode != GIT_FILEMODE_COMMIT &&
|
468
|
+
checkout_is_workdir_modified(data, &delta->old_file, &delta->new_file, wd))
|
468
469
|
*action = CHECKOUT_ACTION_IF(FORCE, UPDATE_BLOB, CONFLICT);
|
469
470
|
else
|
470
471
|
*action = CHECKOUT_ACTION_IF(SAFE, UPDATE_BLOB, NONE);
|
@@ -1342,9 +1343,11 @@ fail:
|
|
1342
1343
|
|
1343
1344
|
static bool should_remove_existing(checkout_data *data)
|
1344
1345
|
{
|
1345
|
-
int ignorecase
|
1346
|
+
int ignorecase;
|
1346
1347
|
|
1347
|
-
git_repository__cvar(&ignorecase, data->repo, GIT_CVAR_IGNORECASE)
|
1348
|
+
if (git_repository__cvar(&ignorecase, data->repo, GIT_CVAR_IGNORECASE) < 0) {
|
1349
|
+
ignorecase = 0;
|
1350
|
+
}
|
1348
1351
|
|
1349
1352
|
return (ignorecase &&
|
1350
1353
|
(data->strategy & GIT_CHECKOUT_DONT_REMOVE_EXISTING) == 0);
|
@@ -2405,8 +2408,13 @@ static int checkout_data_init(
|
|
2405
2408
|
|
2406
2409
|
if (!data->opts.baseline && !data->opts.baseline_index) {
|
2407
2410
|
data->opts_free_baseline = true;
|
2411
|
+
error = 0;
|
2408
2412
|
|
2409
|
-
|
2413
|
+
/* if we don't have an index, this is an initial checkout and
|
2414
|
+
* should be against an empty baseline
|
2415
|
+
*/
|
2416
|
+
if (data->index->on_disk)
|
2417
|
+
error = checkout_lookup_head_tree(&data->opts.baseline, repo);
|
2410
2418
|
|
2411
2419
|
if (error == GIT_EUNBORNBRANCH) {
|
2412
2420
|
error = 0;
|
@@ -2691,7 +2699,7 @@ int git_checkout_tree(
|
|
2691
2699
|
if ((error = git_repository_index(&index, repo)) < 0)
|
2692
2700
|
return error;
|
2693
2701
|
|
2694
|
-
if ((opts->checkout_strategy & GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH)) {
|
2702
|
+
if (opts && (opts->checkout_strategy & GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH)) {
|
2695
2703
|
iter_opts.pathlist.count = opts->paths.count;
|
2696
2704
|
iter_opts.pathlist.strings = opts->paths.strings;
|
2697
2705
|
}
|
data/vendor/libgit2/src/commit.c
CHANGED
@@ -410,10 +410,11 @@ int git_commit__parse(void *_commit, git_odb_object *odb_obj)
|
|
410
410
|
buffer = buffer_start + header_len + 1;
|
411
411
|
|
412
412
|
/* extract commit message */
|
413
|
-
if (buffer <= buffer_end)
|
413
|
+
if (buffer <= buffer_end)
|
414
414
|
commit->raw_message = git__strndup(buffer, buffer_end - buffer);
|
415
|
-
|
416
|
-
|
415
|
+
else
|
416
|
+
commit->raw_message = git__strdup("");
|
417
|
+
GITERR_CHECK_ALLOC(commit->raw_message);
|
417
418
|
|
418
419
|
return 0;
|
419
420
|
|
@@ -676,7 +677,7 @@ int git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_r
|
|
676
677
|
|
677
678
|
buf = git_odb_object_data(obj);
|
678
679
|
|
679
|
-
while ((h = strchr(buf, '\n')) && h[1] != '\0'
|
680
|
+
while ((h = strchr(buf, '\n')) && h[1] != '\0') {
|
680
681
|
h++;
|
681
682
|
if (git__prefixcmp(buf, field)) {
|
682
683
|
if (git_buf_put(signed_data, buf, h - buf) < 0)
|
data/vendor/libgit2/src/common.h
CHANGED
@@ -86,7 +86,8 @@ int git_config__cvar(int *out, git_config *config, git_cvar_cached cvar)
|
|
86
86
|
struct map_data *data = &_cvar_maps[(int)cvar];
|
87
87
|
git_config_entry *entry;
|
88
88
|
|
89
|
-
git_config__lookup_entry(&entry, config, data->cvar_name, false)
|
89
|
+
if ((error = git_config__lookup_entry(&entry, config, data->cvar_name, false)) < 0)
|
90
|
+
return error;
|
90
91
|
|
91
92
|
if (!entry)
|
92
93
|
*out = data->default_value;
|
@@ -553,30 +553,15 @@ static int config_set_multivar(
|
|
553
553
|
git_config_backend *cfg, const char *name, const char *regexp, const char *value)
|
554
554
|
{
|
555
555
|
diskfile_backend *b = (diskfile_backend *)cfg;
|
556
|
-
refcounted_strmap *map;
|
557
|
-
git_strmap *values;
|
558
556
|
char *key;
|
559
557
|
regex_t preg;
|
560
558
|
int result;
|
561
|
-
khiter_t pos;
|
562
559
|
|
563
560
|
assert(regexp);
|
564
561
|
|
565
562
|
if ((result = git_config__normalize_name(name, &key)) < 0)
|
566
563
|
return result;
|
567
564
|
|
568
|
-
map = refcounted_strmap_take(&b->header);
|
569
|
-
values = b->header.values->values;
|
570
|
-
|
571
|
-
pos = git_strmap_lookup_index(values, key);
|
572
|
-
if (!git_strmap_valid_index(values, pos)) {
|
573
|
-
/* If we don't have it, behave like a normal set */
|
574
|
-
result = config_set(cfg, name, value);
|
575
|
-
refcounted_strmap_free(map);
|
576
|
-
git__free(key);
|
577
|
-
return result;
|
578
|
-
}
|
579
|
-
|
580
565
|
result = regcomp(&preg, regexp, REG_EXTENDED);
|
581
566
|
if (result != 0) {
|
582
567
|
giterr_set_regex(&preg, result);
|
@@ -591,7 +576,6 @@ static int config_set_multivar(
|
|
591
576
|
result = config_refresh(cfg);
|
592
577
|
|
593
578
|
out:
|
594
|
-
refcounted_strmap_free(map);
|
595
579
|
git__free(key);
|
596
580
|
regfree(&preg);
|
597
581
|
|
@@ -1032,6 +1016,11 @@ static int parse_section_header_ext(struct reader *reader, const char *line, con
|
|
1032
1016
|
*/
|
1033
1017
|
|
1034
1018
|
first_quote = strchr(line, '"');
|
1019
|
+
if (first_quote == NULL) {
|
1020
|
+
set_parse_error(reader, 0, "Missing quotation marks in section header");
|
1021
|
+
return -1;
|
1022
|
+
}
|
1023
|
+
|
1035
1024
|
last_quote = strrchr(line, '"');
|
1036
1025
|
quoted_len = last_quote - first_quote;
|
1037
1026
|
|
@@ -1483,7 +1472,7 @@ static int config_parse(
|
|
1483
1472
|
int (*on_section)(struct reader **reader, const char *current_section, const char *line, size_t line_len, void *data),
|
1484
1473
|
int (*on_variable)(struct reader **reader, const char *current_section, char *var_name, char *var_value, const char *line, size_t line_len, void *data),
|
1485
1474
|
int (*on_comment)(struct reader **reader, const char *line, size_t line_len, void *data),
|
1486
|
-
int (*on_eof)(struct reader **reader, void *data),
|
1475
|
+
int (*on_eof)(struct reader **reader, const char *current_section, void *data),
|
1487
1476
|
void *data)
|
1488
1477
|
{
|
1489
1478
|
char *current_section = NULL, *var_name, *var_value, *line_start;
|
@@ -1534,7 +1523,7 @@ static int config_parse(
|
|
1534
1523
|
}
|
1535
1524
|
|
1536
1525
|
if (on_eof)
|
1537
|
-
result = on_eof(&reader, data);
|
1526
|
+
result = on_eof(&reader, current_section, data);
|
1538
1527
|
|
1539
1528
|
git__free(current_section);
|
1540
1529
|
return result;
|
@@ -1850,7 +1839,8 @@ static int write_on_comment(struct reader **reader, const char *line, size_t lin
|
|
1850
1839
|
return write_line_to(&write_data->buffered_comment, line, line_len);
|
1851
1840
|
}
|
1852
1841
|
|
1853
|
-
static int write_on_eof(
|
1842
|
+
static int write_on_eof(
|
1843
|
+
struct reader **reader, const char *current_section, void *data)
|
1854
1844
|
{
|
1855
1845
|
struct write_data *write_data = (struct write_data *)data;
|
1856
1846
|
int result = 0;
|
@@ -1869,7 +1859,11 @@ static int write_on_eof(struct reader **reader, void *data)
|
|
1869
1859
|
* value.
|
1870
1860
|
*/
|
1871
1861
|
if ((!write_data->preg || !write_data->preg_replaced) && write_data->value) {
|
1872
|
-
|
1862
|
+
/* write the section header unless we're already in it */
|
1863
|
+
if (!current_section || strcmp(current_section, write_data->section))
|
1864
|
+
result = write_section(write_data->buf, write_data->section);
|
1865
|
+
|
1866
|
+
if (!result)
|
1873
1867
|
result = write_value(write_data);
|
1874
1868
|
}
|
1875
1869
|
|