rugged 0.25.0b5 → 0.25.0b6
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/ext/rugged/rugged_patch.c +77 -17
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +8 -6
- data/vendor/libgit2/include/git2/checkout.h +7 -0
- data/vendor/libgit2/include/git2/common.h +1 -0
- data/vendor/libgit2/include/git2/diff.h +54 -7
- data/vendor/libgit2/include/git2/errors.h +2 -1
- data/vendor/libgit2/include/git2/index.h +25 -0
- data/vendor/libgit2/include/git2/pack.h +4 -4
- data/vendor/libgit2/include/git2/repository.h +20 -1
- data/vendor/libgit2/include/git2/submodule.h +11 -3
- data/vendor/libgit2/include/git2/sys/odb_backend.h +11 -0
- data/vendor/libgit2/src/apply.c +369 -0
- data/vendor/libgit2/src/apply.h +21 -0
- data/vendor/libgit2/src/array.h +0 -1
- data/vendor/libgit2/src/blame_git.c +18 -8
- data/vendor/libgit2/src/buffer.c +252 -20
- data/vendor/libgit2/src/buffer.h +8 -0
- data/vendor/libgit2/src/checkout.c +7 -1
- data/vendor/libgit2/src/clone.c +0 -8
- data/vendor/libgit2/src/common.h +1 -1
- data/vendor/libgit2/src/crlf.c +1 -0
- data/vendor/libgit2/src/delta.c +238 -62
- data/vendor/libgit2/src/delta.h +79 -58
- data/vendor/libgit2/src/diff.c +32 -1547
- data/vendor/libgit2/src/diff.h +12 -122
- data/vendor/libgit2/src/diff_driver.c +1 -2
- data/vendor/libgit2/src/diff_file.c +3 -0
- data/vendor/libgit2/src/diff_generate.c +1611 -0
- data/vendor/libgit2/src/diff_generate.h +123 -0
- data/vendor/libgit2/src/diff_parse.c +105 -0
- data/vendor/libgit2/src/diff_print.c +259 -142
- data/vendor/libgit2/src/diff_stats.c +3 -2
- data/vendor/libgit2/src/diff_tform.c +1 -0
- data/vendor/libgit2/src/diff_tform.h +22 -0
- data/vendor/libgit2/src/diff_xdiff.c +9 -9
- data/vendor/libgit2/src/diff_xdiff.h +5 -5
- data/vendor/libgit2/src/fileops.c +13 -0
- data/vendor/libgit2/src/fileops.h +6 -0
- data/vendor/libgit2/src/global.c +9 -8
- data/vendor/libgit2/src/ignore.c +45 -16
- data/vendor/libgit2/src/index.c +161 -47
- data/vendor/libgit2/src/index.h +2 -0
- data/vendor/libgit2/src/merge.c +2 -0
- data/vendor/libgit2/src/mwindow.c +8 -19
- data/vendor/libgit2/src/mwindow.h +1 -2
- data/vendor/libgit2/src/odb.c +46 -10
- data/vendor/libgit2/src/odb_loose.c +19 -1
- data/vendor/libgit2/src/odb_pack.c +27 -4
- data/vendor/libgit2/src/pack-objects.c +106 -77
- data/vendor/libgit2/src/pack-objects.h +13 -12
- data/vendor/libgit2/src/pack.c +4 -3
- data/vendor/libgit2/src/pack.h +2 -0
- data/vendor/libgit2/src/patch.c +207 -0
- data/vendor/libgit2/src/patch.h +66 -0
- data/vendor/libgit2/src/{diff_patch.c → patch_generate.c} +171 -359
- data/vendor/libgit2/src/patch_generate.h +66 -0
- data/vendor/libgit2/src/patch_parse.c +1121 -0
- data/vendor/libgit2/src/patch_parse.h +54 -0
- data/vendor/libgit2/src/path.c +19 -0
- data/vendor/libgit2/src/path.h +6 -0
- data/vendor/libgit2/src/pool.h +5 -0
- data/vendor/libgit2/src/remote.c +15 -80
- data/vendor/libgit2/src/repository.c +227 -39
- data/vendor/libgit2/src/settings.c +11 -5
- data/vendor/libgit2/src/stash.c +1 -0
- data/vendor/libgit2/src/status.c +1 -0
- data/vendor/libgit2/src/stransport_stream.c +14 -9
- data/vendor/libgit2/src/submodule.c +16 -4
- data/vendor/libgit2/src/sysdir.c +41 -47
- data/vendor/libgit2/src/sysdir.h +0 -5
- data/vendor/libgit2/src/thread-utils.h +5 -51
- data/vendor/libgit2/src/transport.c +3 -5
- data/vendor/libgit2/src/transports/http.c +2 -3
- data/vendor/libgit2/src/transports/smart_pkt.c +1 -0
- data/vendor/libgit2/src/transports/smart_protocol.c +11 -0
- data/vendor/libgit2/src/transports/winhttp.c +16 -2
- data/vendor/libgit2/src/unix/pthread.h +54 -0
- data/vendor/libgit2/src/util.c +23 -5
- data/vendor/libgit2/src/util.h +10 -0
- data/vendor/libgit2/src/varint.c +44 -0
- data/vendor/libgit2/src/varint.h +15 -0
- data/vendor/libgit2/src/vector.c +42 -0
- data/vendor/libgit2/src/vector.h +3 -0
- 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/zstream.c +36 -7
- data/vendor/libgit2/src/zstream.h +8 -1
- metadata +20 -9
- data/vendor/libgit2/src/delta-apply.c +0 -166
- data/vendor/libgit2/src/delta-apply.h +0 -62
- data/vendor/libgit2/src/diff_patch.h +0 -83
- data/vendor/libgit2/src/win32/pthread.h +0 -92
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: af6c929ae8035ca49fdd7945f2e36eedff07c1a7
|
|
4
|
+
data.tar.gz: f05f796386fd1f812f4dce21b958c6d1a801dfa6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 22902b9aad7497f1947a391c9ee0dd5d4780a268bf5edf8b3ce18bdbddc269e52b2c1d76a944acc0cc091ef4565dc0f5cb8aa4056fbccfa1d4df317d7ff03aab
|
|
7
|
+
data.tar.gz: 3654613b8a5f37afc667067a34ebdc898eca94b15b63c3714cb2d7166707cbd3a1f15b244f9899d12721d9dc3ce6f62b22e530e35a3c5701c6862fde908044aa
|
data/ext/rugged/rugged_patch.c
CHANGED
|
@@ -175,47 +175,107 @@ static VALUE rb_git_diff_patch_stat(VALUE self)
|
|
|
175
175
|
|
|
176
176
|
/*
|
|
177
177
|
* call-seq:
|
|
178
|
-
* patch.lines -> int
|
|
178
|
+
* patch.lines(options = {}) -> int
|
|
179
179
|
*
|
|
180
|
-
*
|
|
180
|
+
* The following options can be passed in the +options+ Hash:
|
|
181
|
+
*
|
|
182
|
+
* :exclude_context ::
|
|
183
|
+
* Boolean value specifying that context line counts should be excluded from
|
|
184
|
+
* the returned total.
|
|
185
|
+
*
|
|
186
|
+
* :exclude_additions ::
|
|
187
|
+
* Boolean value specifying that addition line counts should be excluded from
|
|
188
|
+
* the returned total.
|
|
189
|
+
*
|
|
190
|
+
* :exclude_deletions ::
|
|
191
|
+
* Boolean value specifying that deletion line counts should be excluded from
|
|
192
|
+
* the returned total.
|
|
193
|
+
*
|
|
194
|
+
* Returns the total number of lines in the patch, depending on the options
|
|
195
|
+
* specified.
|
|
181
196
|
*/
|
|
182
|
-
static VALUE rb_git_diff_patch_lines(VALUE self)
|
|
197
|
+
static VALUE rb_git_diff_patch_lines(int argc, VALUE *argv, VALUE self)
|
|
183
198
|
{
|
|
184
199
|
git_patch *patch;
|
|
185
|
-
size_t
|
|
200
|
+
size_t context_lines, additions, deletions;
|
|
201
|
+
size_t total_out;
|
|
202
|
+
VALUE rb_options;
|
|
186
203
|
Data_Get_Struct(self, git_patch, patch);
|
|
187
204
|
|
|
188
|
-
|
|
205
|
+
context_lines = 0;
|
|
206
|
+
additions = 0;
|
|
207
|
+
deletions = 0;
|
|
189
208
|
|
|
190
|
-
|
|
191
|
-
|
|
209
|
+
git_patch_line_stats(&context_lines, &additions, &deletions, patch);
|
|
210
|
+
|
|
211
|
+
total_out = context_lines + additions + deletions;
|
|
212
|
+
|
|
213
|
+
rb_scan_args(argc, argv, "0:", &rb_options);
|
|
214
|
+
if (!NIL_P(rb_options)) {
|
|
215
|
+
if (RTEST(rb_hash_aref(rb_options, CSTR2SYM("exclude_context")))) {
|
|
216
|
+
total_out -= context_lines;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
if (RTEST(rb_hash_aref(rb_options, CSTR2SYM("exclude_additions")))) {
|
|
220
|
+
total_out -= additions;
|
|
221
|
+
}
|
|
192
222
|
|
|
223
|
+
if (RTEST(rb_hash_aref(rb_options, CSTR2SYM("exclude_deletions")))) {
|
|
224
|
+
total_out -= deletions;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
return INT2FIX(total_out);
|
|
229
|
+
}
|
|
230
|
+
/*
|
|
231
|
+
* call-seq:
|
|
232
|
+
* patch.bytesize(options = {}) -> int
|
|
233
|
+
*
|
|
234
|
+
* The following options can be passed in the +options+ Hash:
|
|
235
|
+
*
|
|
236
|
+
* :exclude_context ::
|
|
237
|
+
* Boolean value specifying that context lines should be excluded when
|
|
238
|
+
* counting the number of bytes in the patch.
|
|
239
|
+
*
|
|
240
|
+
* :exclude_hunk_headers ::
|
|
241
|
+
* Boolean value specifying that hunk headers should be excluded when
|
|
242
|
+
* counting the number of bytes in the patch.
|
|
243
|
+
*
|
|
244
|
+
* :exclude_file_headers ::
|
|
245
|
+
* Boolean value specifying that file headers should be excluded when
|
|
246
|
+
* counting the number of bytes in the patch.
|
|
247
|
+
*
|
|
248
|
+
* Returns the number of bytes in the patch, depending on which options are
|
|
249
|
+
* specified.
|
|
250
|
+
*/
|
|
193
251
|
static VALUE rb_git_diff_patch_bytesize(int argc, VALUE *argv, VALUE self)
|
|
194
252
|
{
|
|
195
253
|
git_patch *patch;
|
|
196
254
|
size_t bytesize;
|
|
197
255
|
VALUE rb_options;
|
|
198
|
-
int
|
|
256
|
+
int include_context, include_hunk_headers, include_file_headers;
|
|
199
257
|
Data_Get_Struct(self, git_patch, patch);
|
|
200
258
|
|
|
201
|
-
|
|
259
|
+
include_context = 1;
|
|
260
|
+
include_hunk_headers = 1;
|
|
261
|
+
include_file_headers = 1;
|
|
202
262
|
|
|
203
263
|
rb_scan_args(argc, argv, "0:", &rb_options);
|
|
204
264
|
if (!NIL_P(rb_options)) {
|
|
205
|
-
if (
|
|
206
|
-
|
|
265
|
+
if (rb_hash_aref(rb_options, CSTR2SYM("include_context")) == Qfalse) {
|
|
266
|
+
include_context = 0;
|
|
207
267
|
}
|
|
208
268
|
|
|
209
|
-
if (
|
|
210
|
-
|
|
269
|
+
if (rb_hash_aref(rb_options, CSTR2SYM("include_hunk_headers")) == Qfalse) {
|
|
270
|
+
include_hunk_headers = 0;
|
|
211
271
|
}
|
|
212
272
|
|
|
213
|
-
if (
|
|
214
|
-
|
|
273
|
+
if (rb_hash_aref(rb_options, CSTR2SYM("include_file_headers")) == Qfalse) {
|
|
274
|
+
include_file_headers = 0;
|
|
215
275
|
}
|
|
216
276
|
}
|
|
217
277
|
|
|
218
|
-
bytesize = git_patch_size(patch,
|
|
278
|
+
bytesize = git_patch_size(patch, include_context, include_hunk_headers, include_file_headers);
|
|
219
279
|
|
|
220
280
|
return INT2FIX(bytesize);
|
|
221
281
|
}
|
|
@@ -264,7 +324,7 @@ void Init_rugged_patch(void)
|
|
|
264
324
|
rb_define_singleton_method(rb_cRuggedPatch, "from_strings", rb_git_patch_from_strings, -1);
|
|
265
325
|
|
|
266
326
|
rb_define_method(rb_cRuggedPatch, "stat", rb_git_diff_patch_stat, 0);
|
|
267
|
-
rb_define_method(rb_cRuggedPatch, "lines", rb_git_diff_patch_lines,
|
|
327
|
+
rb_define_method(rb_cRuggedPatch, "lines", rb_git_diff_patch_lines, -1);
|
|
268
328
|
rb_define_method(rb_cRuggedPatch, "bytesize", rb_git_diff_patch_bytesize, -1);
|
|
269
329
|
|
|
270
330
|
rb_define_method(rb_cRuggedPatch, "delta", rb_git_diff_patch_delta, 0);
|
data/lib/rugged/version.rb
CHANGED
|
@@ -473,19 +473,21 @@ ELSE ()
|
|
|
473
473
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
|
|
474
474
|
ENDIF ()
|
|
475
475
|
|
|
476
|
-
IF (MINGW) # MinGW always
|
|
476
|
+
IF (MINGW OR MSYS) # MinGW and MSYS always do PIC and complain if we tell them to
|
|
477
477
|
STRING(REGEX REPLACE "-fPIC" "" CMAKE_SHARED_LIBRARY_C_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS}")
|
|
478
|
-
# MinGW >= 3.14 uses the C99-style stdio functions
|
|
479
|
-
# automatically, but forks like mingw-w64 still want
|
|
480
|
-
# us to define this in order to use them
|
|
481
|
-
ADD_DEFINITIONS(-D__USE_MINGW_ANSI_STDIO=1)
|
|
482
|
-
|
|
483
478
|
ELSEIF (BUILD_SHARED_LIBS)
|
|
484
479
|
ADD_C_FLAG_IF_SUPPORTED(-fvisibility=hidden)
|
|
485
480
|
|
|
486
481
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
|
|
487
482
|
ENDIF ()
|
|
488
483
|
|
|
484
|
+
IF (MINGW)
|
|
485
|
+
# MinGW >= 3.14 uses the C99-style stdio functions
|
|
486
|
+
# automatically, but forks like mingw-w64 still want
|
|
487
|
+
# us to define this in order to use them
|
|
488
|
+
ADD_DEFINITIONS(-D__USE_MINGW_ANSI_STDIO=1)
|
|
489
|
+
ENDIF ()
|
|
490
|
+
|
|
489
491
|
ADD_C_FLAG_IF_SUPPORTED(-Wdocumentation)
|
|
490
492
|
ADD_C_FLAG_IF_SUPPORTED(-Wno-missing-field-initializers)
|
|
491
493
|
ADD_C_FLAG_IF_SUPPORTED(-Wstrict-aliasing=2)
|
|
@@ -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
|
|
@@ -264,7 +264,7 @@ typedef enum {
|
|
|
264
264
|
* link, a submodule commit id, or even a tree (although that only if you
|
|
265
265
|
* are tracking type changes or ignored/untracked directories).
|
|
266
266
|
*
|
|
267
|
-
* The `
|
|
267
|
+
* The `id` is the `git_oid` of the item. If the entry represents an
|
|
268
268
|
* absent side of a diff (e.g. the `old_file` of a `GIT_DELTA_ADDED` delta),
|
|
269
269
|
* then the oid will be zeroes.
|
|
270
270
|
*
|
|
@@ -277,6 +277,11 @@ typedef enum {
|
|
|
277
277
|
*
|
|
278
278
|
* `mode` is, roughly, the stat() `st_mode` value for the item. This will
|
|
279
279
|
* be restricted to one of the `git_filemode_t` values.
|
|
280
|
+
*
|
|
281
|
+
* The `id_abbrev` represents the known length of the `id` field, when
|
|
282
|
+
* converted to a hex string. It is generally `GIT_OID_HEXSZ`, unless this
|
|
283
|
+
* delta was created from reading a patch file, in which case it may be
|
|
284
|
+
* abbreviated to something reasonable, like 7 characters.
|
|
280
285
|
*/
|
|
281
286
|
typedef struct {
|
|
282
287
|
git_oid id;
|
|
@@ -284,6 +289,7 @@ typedef struct {
|
|
|
284
289
|
git_off_t size;
|
|
285
290
|
uint32_t flags;
|
|
286
291
|
uint16_t mode;
|
|
292
|
+
uint16_t id_abbrev;
|
|
287
293
|
} git_diff_file;
|
|
288
294
|
|
|
289
295
|
/**
|
|
@@ -448,6 +454,8 @@ typedef int (*git_diff_file_cb)(
|
|
|
448
454
|
float progress,
|
|
449
455
|
void *payload);
|
|
450
456
|
|
|
457
|
+
#define GIT_DIFF_HUNK_HEADER_SIZE 128
|
|
458
|
+
|
|
451
459
|
/**
|
|
452
460
|
* When producing a binary diff, the binary data returned will be
|
|
453
461
|
* either the deflated full ("literal") contents of the file, or
|
|
@@ -499,12 +507,12 @@ typedef int(*git_diff_binary_cb)(
|
|
|
499
507
|
* Structure describing a hunk of a diff.
|
|
500
508
|
*/
|
|
501
509
|
typedef struct {
|
|
502
|
-
int old_start;
|
|
503
|
-
int old_lines;
|
|
504
|
-
int new_start;
|
|
505
|
-
int new_lines;
|
|
506
|
-
size_t header_len;
|
|
507
|
-
char header[
|
|
510
|
+
int old_start; /** Starting line number in old_file */
|
|
511
|
+
int old_lines; /** Number of lines in old_file */
|
|
512
|
+
int new_start; /** Starting line number in new_file */
|
|
513
|
+
int new_lines; /** Number of lines in new_file */
|
|
514
|
+
size_t header_len; /** Number of bytes in header text */
|
|
515
|
+
char header[GIT_DIFF_HUNK_HEADER_SIZE]; /** Header text, NUL-byte terminated */
|
|
508
516
|
} git_diff_hunk;
|
|
509
517
|
|
|
510
518
|
/**
|
|
@@ -1046,6 +1054,21 @@ GIT_EXTERN(int) git_diff_print(
|
|
|
1046
1054
|
git_diff_line_cb print_cb,
|
|
1047
1055
|
void *payload);
|
|
1048
1056
|
|
|
1057
|
+
/**
|
|
1058
|
+
* Produce the complete formatted text output from a diff into a
|
|
1059
|
+
* buffer.
|
|
1060
|
+
*
|
|
1061
|
+
* @param out A pointer to a user-allocated git_buf that will
|
|
1062
|
+
* contain the diff text
|
|
1063
|
+
* @param diff A git_diff generated by one of the above functions.
|
|
1064
|
+
* @param format A git_diff_format_t value to pick the text format.
|
|
1065
|
+
* @return 0 on success or error code
|
|
1066
|
+
*/
|
|
1067
|
+
GIT_EXTERN(int) git_diff_to_buf(
|
|
1068
|
+
git_buf *out,
|
|
1069
|
+
git_diff *diff,
|
|
1070
|
+
git_diff_format_t format);
|
|
1071
|
+
|
|
1049
1072
|
/**@}*/
|
|
1050
1073
|
|
|
1051
1074
|
|
|
@@ -1166,6 +1189,30 @@ GIT_EXTERN(int) git_diff_buffers(
|
|
|
1166
1189
|
git_diff_line_cb line_cb,
|
|
1167
1190
|
void *payload);
|
|
1168
1191
|
|
|
1192
|
+
/**
|
|
1193
|
+
* Read the contents of a git patch file into a `git_diff` object.
|
|
1194
|
+
*
|
|
1195
|
+
* The diff object produced is similar to the one that would be
|
|
1196
|
+
* produced if you actually produced it computationally by comparing
|
|
1197
|
+
* two trees, however there may be subtle differences. For example,
|
|
1198
|
+
* a patch file likely contains abbreviated object IDs, so the
|
|
1199
|
+
* object IDs in a `git_diff_delta` produced by this function will
|
|
1200
|
+
* also be abbreviated.
|
|
1201
|
+
*
|
|
1202
|
+
* This function will only read patch files created by a git
|
|
1203
|
+
* implementation, it will not read unified diffs produced by
|
|
1204
|
+
* the `diff` program, nor any other types of patch files.
|
|
1205
|
+
*
|
|
1206
|
+
* @param out A pointer to a git_diff pointer that will be allocated.
|
|
1207
|
+
* @param content The contents of a patch file
|
|
1208
|
+
* @param content_len The length of the patch file contents
|
|
1209
|
+
* @return 0 or an error code
|
|
1210
|
+
*/
|
|
1211
|
+
GIT_EXTERN(int) git_diff_from_buffer(
|
|
1212
|
+
git_diff **out,
|
|
1213
|
+
const char *content,
|
|
1214
|
+
size_t content_len);
|
|
1215
|
+
|
|
1169
1216
|
/**
|
|
1170
1217
|
* This is an opaque structure which is allocated by `git_diff_get_stats`.
|
|
1171
1218
|
* You are responsible for releasing the object memory when done, using the
|
|
@@ -251,6 +251,31 @@ GIT_EXTERN(int) git_index_caps(const git_index *index);
|
|
|
251
251
|
*/
|
|
252
252
|
GIT_EXTERN(int) git_index_set_caps(git_index *index, int caps);
|
|
253
253
|
|
|
254
|
+
/**
|
|
255
|
+
* Get index on-disk version.
|
|
256
|
+
*
|
|
257
|
+
* Valid return values are 2, 3, or 4. If 3 is returned, an index
|
|
258
|
+
* with version 2 may be written instead, if the extension data in
|
|
259
|
+
* version 3 is not necessary.
|
|
260
|
+
*
|
|
261
|
+
* @param index An existing index object
|
|
262
|
+
* @return the index version
|
|
263
|
+
*/
|
|
264
|
+
GIT_EXTERN(unsigned int) git_index_version(git_index *index);
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Set index on-disk version.
|
|
268
|
+
*
|
|
269
|
+
* Valid values are 2, 3, or 4. If 2 is given, git_index_write may
|
|
270
|
+
* write an index with version 3 instead, if necessary to accurately
|
|
271
|
+
* represent the index.
|
|
272
|
+
*
|
|
273
|
+
* @param index An existing index object
|
|
274
|
+
* @param version The new version number
|
|
275
|
+
* @return 0 on success, -1 on failure
|
|
276
|
+
*/
|
|
277
|
+
GIT_EXTERN(int) git_index_set_version(git_index *index, unsigned int version);
|
|
278
|
+
|
|
254
279
|
/**
|
|
255
280
|
* Update the contents of an existing index object in memory by reading
|
|
256
281
|
* from the hard disk.
|
|
@@ -196,7 +196,7 @@ GIT_EXTERN(int) git_packbuilder_foreach(git_packbuilder *pb, git_packbuilder_for
|
|
|
196
196
|
* @param pb the packbuilder
|
|
197
197
|
* @return the number of objects in the packfile
|
|
198
198
|
*/
|
|
199
|
-
GIT_EXTERN(
|
|
199
|
+
GIT_EXTERN(size_t) git_packbuilder_object_count(git_packbuilder *pb);
|
|
200
200
|
|
|
201
201
|
/**
|
|
202
202
|
* Get the number of objects the packbuilder has already written out
|
|
@@ -204,13 +204,13 @@ GIT_EXTERN(uint32_t) git_packbuilder_object_count(git_packbuilder *pb);
|
|
|
204
204
|
* @param pb the packbuilder
|
|
205
205
|
* @return the number of objects which have already been written
|
|
206
206
|
*/
|
|
207
|
-
GIT_EXTERN(
|
|
207
|
+
GIT_EXTERN(size_t) git_packbuilder_written(git_packbuilder *pb);
|
|
208
208
|
|
|
209
209
|
/** Packbuilder progress notification function */
|
|
210
210
|
typedef int (*git_packbuilder_progress)(
|
|
211
211
|
int stage,
|
|
212
|
-
|
|
213
|
-
|
|
212
|
+
uint32_t current,
|
|
213
|
+
uint32_t total,
|
|
214
214
|
void *payload);
|
|
215
215
|
|
|
216
216
|
/**
|
|
@@ -95,11 +95,29 @@ GIT_EXTERN(int) git_repository_discover(
|
|
|
95
95
|
* * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless
|
|
96
96
|
* of core.bare config, and defer loading config file for faster setup.
|
|
97
97
|
* Unlike `git_repository_open_bare`, this can follow gitlinks.
|
|
98
|
+
* * GIT_REPOSITORY_OPEN_NO_DOTGIT - Do not check for a repository by
|
|
99
|
+
* appending /.git to the start_path; only open the repository if
|
|
100
|
+
* start_path itself points to the git directory.
|
|
101
|
+
* * GIT_REPOSITORY_OPEN_FROM_ENV - Find and open a git repository,
|
|
102
|
+
* respecting the environment variables used by the git command-line
|
|
103
|
+
* tools. If set, `git_repository_open_ext` will ignore the other
|
|
104
|
+
* flags and the `ceiling_dirs` argument, and will allow a NULL `path`
|
|
105
|
+
* to use `GIT_DIR` or search from the current directory. The search
|
|
106
|
+
* for a repository will respect $GIT_CEILING_DIRECTORIES and
|
|
107
|
+
* $GIT_DISCOVERY_ACROSS_FILESYSTEM. The opened repository will
|
|
108
|
+
* respect $GIT_INDEX_FILE, $GIT_NAMESPACE, $GIT_OBJECT_DIRECTORY, and
|
|
109
|
+
* $GIT_ALTERNATE_OBJECT_DIRECTORIES. In the future, this flag will
|
|
110
|
+
* also cause `git_repository_open_ext` to respect $GIT_WORK_TREE and
|
|
111
|
+
* $GIT_COMMON_DIR; currently, `git_repository_open_ext` with this
|
|
112
|
+
* flag will error out if either $GIT_WORK_TREE or $GIT_COMMON_DIR is
|
|
113
|
+
* set.
|
|
98
114
|
*/
|
|
99
115
|
typedef enum {
|
|
100
116
|
GIT_REPOSITORY_OPEN_NO_SEARCH = (1 << 0),
|
|
101
117
|
GIT_REPOSITORY_OPEN_CROSS_FS = (1 << 1),
|
|
102
118
|
GIT_REPOSITORY_OPEN_BARE = (1 << 2),
|
|
119
|
+
GIT_REPOSITORY_OPEN_NO_DOTGIT = (1 << 3),
|
|
120
|
+
GIT_REPOSITORY_OPEN_FROM_ENV = (1 << 4),
|
|
103
121
|
} git_repository_open_flag_t;
|
|
104
122
|
|
|
105
123
|
/**
|
|
@@ -110,7 +128,8 @@ typedef enum {
|
|
|
110
128
|
* see if a repo at this path could be opened.
|
|
111
129
|
* @param path Path to open as git repository. If the flags
|
|
112
130
|
* permit "searching", then this can be a path to a subdirectory
|
|
113
|
-
* inside the working directory of the repository.
|
|
131
|
+
* inside the working directory of the repository. May be NULL if
|
|
132
|
+
* flags is GIT_REPOSITORY_OPEN_FROM_ENV.
|
|
114
133
|
* @param flags A combination of the GIT_REPOSITORY_OPEN flags above.
|
|
115
134
|
* @param ceiling_dirs A GIT_PATH_LIST_SEPARATOR delimited list of path
|
|
116
135
|
* prefixes at which the search for a containing repository should
|
|
@@ -154,13 +154,19 @@ typedef struct git_submodule_update_options {
|
|
|
154
154
|
* in the working directory for the newly cloned repository.
|
|
155
155
|
*/
|
|
156
156
|
unsigned int clone_checkout_strategy;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Allow fetching from the submodule's default remote if the target
|
|
160
|
+
* commit isn't found. Enabled by default.
|
|
161
|
+
*/
|
|
162
|
+
int allow_fetch;
|
|
157
163
|
} git_submodule_update_options;
|
|
158
164
|
|
|
159
165
|
#define GIT_SUBMODULE_UPDATE_OPTIONS_VERSION 1
|
|
160
166
|
#define GIT_SUBMODULE_UPDATE_OPTIONS_INIT \
|
|
161
|
-
{
|
|
167
|
+
{ GIT_SUBMODULE_UPDATE_OPTIONS_VERSION, \
|
|
162
168
|
{ GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE }, \
|
|
163
|
-
GIT_FETCH_OPTIONS_INIT, GIT_CHECKOUT_SAFE }
|
|
169
|
+
GIT_FETCH_OPTIONS_INIT, GIT_CHECKOUT_SAFE, 1 }
|
|
164
170
|
|
|
165
171
|
/**
|
|
166
172
|
* Initializes a `git_submodule_update_options` with default values.
|
|
@@ -176,7 +182,9 @@ GIT_EXTERN(int) git_submodule_update_init_options(
|
|
|
176
182
|
/**
|
|
177
183
|
* Update a submodule. This will clone a missing submodule and
|
|
178
184
|
* checkout the subrepository to the commit specified in the index of
|
|
179
|
-
* containing repository.
|
|
185
|
+
* the containing repository. If the submodule repository doesn't contain
|
|
186
|
+
* the target commit (e.g. because fetchRecurseSubmodules isn't set), then
|
|
187
|
+
* the submodule is fetched using the fetch options supplied in options.
|
|
180
188
|
*
|
|
181
189
|
* @param submodule Submodule object
|
|
182
190
|
* @param init If the submodule is not initialized, setting this flag to true
|