rugged 0.25.0b2 → 0.25.0b3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +1 -1
- data/ext/rugged/extconf.rb +3 -1
- data/ext/rugged/rugged.c +1 -1
- data/ext/rugged/rugged.h +1 -1
- data/ext/rugged/rugged_blob.c +29 -38
- data/ext/rugged/rugged_commit.c +215 -78
- data/ext/rugged/rugged_rebase.c +18 -11
- data/ext/rugged/rugged_remote.c +2 -2
- data/ext/rugged/rugged_tree.c +132 -0
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +11 -3
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/include/git2/blob.h +39 -28
- data/vendor/libgit2/include/git2/commit.h +30 -0
- data/vendor/libgit2/include/git2/common.h +16 -1
- data/vendor/libgit2/include/git2/merge.h +10 -1
- data/vendor/libgit2/include/git2/proxy.h +92 -0
- data/vendor/libgit2/include/git2/refs.h +11 -0
- data/vendor/libgit2/include/git2/remote.h +17 -4
- data/vendor/libgit2/include/git2/signature.h +13 -0
- data/vendor/libgit2/include/git2/sys/merge.h +177 -0
- data/vendor/libgit2/include/git2/sys/remote.h +16 -0
- data/vendor/libgit2/include/git2/sys/stream.h +2 -1
- data/vendor/libgit2/include/git2/sys/transport.h +3 -1
- data/vendor/libgit2/include/git2/tag.h +9 -0
- data/vendor/libgit2/include/git2/tree.h +55 -0
- data/vendor/libgit2/src/annotated_commit.c +99 -80
- data/vendor/libgit2/src/annotated_commit.h +5 -2
- data/vendor/libgit2/src/array.h +40 -0
- data/vendor/libgit2/src/blame.c +8 -3
- data/vendor/libgit2/src/blame_git.c +2 -1
- data/vendor/libgit2/src/blob.c +71 -39
- data/vendor/libgit2/src/branch.c +2 -1
- data/vendor/libgit2/src/checkout.c +66 -42
- data/vendor/libgit2/src/commit.c +67 -3
- data/vendor/libgit2/src/config_cache.c +2 -1
- data/vendor/libgit2/src/config_file.c +32 -27
- data/vendor/libgit2/src/curl_stream.c +89 -6
- data/vendor/libgit2/src/delta-apply.c +36 -5
- data/vendor/libgit2/src/delta-apply.h +12 -0
- data/vendor/libgit2/src/describe.c +3 -2
- data/vendor/libgit2/src/diff.c +13 -20
- data/vendor/libgit2/src/diff_tform.c +5 -3
- data/vendor/libgit2/src/filebuf.c +12 -2
- data/vendor/libgit2/src/filebuf.h +1 -0
- data/vendor/libgit2/src/fnmatch.c +18 -5
- data/vendor/libgit2/src/global.c +18 -0
- data/vendor/libgit2/src/global.h +1 -0
- data/vendor/libgit2/src/ignore.c +11 -3
- data/vendor/libgit2/src/index.c +11 -5
- data/vendor/libgit2/src/indexer.c +11 -7
- data/vendor/libgit2/src/iterator.c +1575 -1468
- data/vendor/libgit2/src/iterator.h +52 -69
- data/vendor/libgit2/src/merge.c +160 -63
- data/vendor/libgit2/src/merge.h +61 -2
- data/vendor/libgit2/src/merge_driver.c +397 -0
- data/vendor/libgit2/src/merge_driver.h +60 -0
- data/vendor/libgit2/src/merge_file.c +11 -49
- data/vendor/libgit2/src/netops.c +12 -10
- data/vendor/libgit2/src/object.c +3 -6
- data/vendor/libgit2/src/object_api.c +19 -1
- data/vendor/libgit2/src/odb_loose.c +1 -1
- data/vendor/libgit2/src/openssl_stream.c +16 -3
- data/vendor/libgit2/src/pack-objects.c +3 -1
- data/vendor/libgit2/src/pack.c +5 -9
- data/vendor/libgit2/src/path.c +14 -0
- data/vendor/libgit2/src/path.h +12 -0
- data/vendor/libgit2/src/pathspec.c +1 -1
- data/vendor/libgit2/src/posix.c +7 -0
- data/vendor/libgit2/src/posix.h +1 -0
- data/vendor/libgit2/src/proxy.c +32 -0
- data/vendor/libgit2/src/proxy.h +14 -0
- data/vendor/libgit2/src/push.c +7 -7
- data/vendor/libgit2/src/rebase.c +61 -31
- data/vendor/libgit2/src/refdb_fs.c +1 -0
- data/vendor/libgit2/src/refs.c +16 -1
- data/vendor/libgit2/src/remote.c +20 -6
- data/vendor/libgit2/src/repository.c +1 -1
- data/vendor/libgit2/src/reset.c +1 -1
- data/vendor/libgit2/src/settings.c +23 -1
- data/vendor/libgit2/src/signature.c +26 -1
- data/vendor/libgit2/src/stransport_stream.c +5 -2
- data/vendor/libgit2/src/stream.h +2 -2
- data/vendor/libgit2/src/submodule.c +3 -2
- data/vendor/libgit2/src/tag.c +8 -2
- data/vendor/libgit2/src/transports/http.c +32 -9
- data/vendor/libgit2/src/transports/local.c +4 -1
- data/vendor/libgit2/src/transports/smart.c +6 -0
- data/vendor/libgit2/src/transports/smart.h +1 -0
- data/vendor/libgit2/src/transports/smart_protocol.c +61 -17
- data/vendor/libgit2/src/transports/winhttp.c +130 -11
- data/vendor/libgit2/src/tree.c +329 -98
- data/vendor/libgit2/src/tree.h +4 -5
- data/vendor/libgit2/src/unix/map.c +5 -0
- data/vendor/libgit2/src/win32/map.c +24 -5
- data/vendor/libgit2/src/xdiff/xprepare.c +2 -1
- metadata +10 -4
- data/vendor/libgit2/Makefile.embed +0 -60
@@ -0,0 +1,32 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include "common.h"
|
9
|
+
#include "git2/proxy.h"
|
10
|
+
|
11
|
+
int git_proxy_init_options(git_proxy_options *opts, unsigned int version)
|
12
|
+
{
|
13
|
+
GIT_INIT_STRUCTURE_FROM_TEMPLATE(
|
14
|
+
opts, version, git_proxy_options, GIT_PROXY_OPTIONS_INIT);
|
15
|
+
return 0;
|
16
|
+
}
|
17
|
+
|
18
|
+
int git_proxy_options_dup(git_proxy_options *tgt, const git_proxy_options *src)
|
19
|
+
{
|
20
|
+
if (!src) {
|
21
|
+
git_proxy_init_options(tgt, GIT_PROXY_OPTIONS_VERSION);
|
22
|
+
return 0;
|
23
|
+
}
|
24
|
+
|
25
|
+
memcpy(tgt, src, sizeof(git_proxy_options));
|
26
|
+
if (src->url) {
|
27
|
+
tgt->url = git__strdup(src->url);
|
28
|
+
GITERR_CHECK_ALLOC(tgt->url);
|
29
|
+
}
|
30
|
+
|
31
|
+
return 0;
|
32
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
#ifndef INCLUDE_proxy_h__
|
8
|
+
#define INCLUDE_proxy_h__
|
9
|
+
|
10
|
+
#include "git2/proxy.h"
|
11
|
+
|
12
|
+
extern int git_proxy_options_dup(git_proxy_options *tgt, const git_proxy_options *src);
|
13
|
+
|
14
|
+
#endif
|
data/vendor/libgit2/src/push.c
CHANGED
@@ -374,9 +374,9 @@ static int enqueue_object(
|
|
374
374
|
case GIT_OBJ_COMMIT:
|
375
375
|
return 0;
|
376
376
|
case GIT_OBJ_TREE:
|
377
|
-
return git_packbuilder_insert_tree(pb,
|
377
|
+
return git_packbuilder_insert_tree(pb, entry->oid);
|
378
378
|
default:
|
379
|
-
return git_packbuilder_insert(pb,
|
379
|
+
return git_packbuilder_insert(pb, entry->oid, entry->filename);
|
380
380
|
}
|
381
381
|
}
|
382
382
|
|
@@ -396,7 +396,7 @@ static int queue_differences(
|
|
396
396
|
const git_tree_entry *d_entry = git_tree_entry_byindex(delta, j);
|
397
397
|
int cmp = 0;
|
398
398
|
|
399
|
-
if (!git_oid__cmp(
|
399
|
+
if (!git_oid__cmp(b_entry->oid, d_entry->oid))
|
400
400
|
goto loop;
|
401
401
|
|
402
402
|
cmp = strcmp(b_entry->filename, d_entry->filename);
|
@@ -407,15 +407,15 @@ static int queue_differences(
|
|
407
407
|
git_tree_entry__is_tree(b_entry) &&
|
408
408
|
git_tree_entry__is_tree(d_entry)) {
|
409
409
|
/* Add the right-hand entry */
|
410
|
-
if ((error = git_packbuilder_insert(pb,
|
410
|
+
if ((error = git_packbuilder_insert(pb, d_entry->oid,
|
411
411
|
d_entry->filename)) < 0)
|
412
412
|
goto on_error;
|
413
413
|
|
414
414
|
/* Acquire the subtrees and recurse */
|
415
415
|
if ((error = git_tree_lookup(&b_child,
|
416
|
-
git_tree_owner(base),
|
416
|
+
git_tree_owner(base), b_entry->oid)) < 0 ||
|
417
417
|
(error = git_tree_lookup(&d_child,
|
418
|
-
git_tree_owner(delta),
|
418
|
+
git_tree_owner(delta), d_entry->oid)) < 0 ||
|
419
419
|
(error = queue_differences(b_child, d_child, pb)) < 0)
|
420
420
|
goto on_error;
|
421
421
|
|
@@ -639,7 +639,7 @@ int git_push_finish(git_push *push, const git_remote_callbacks *callbacks)
|
|
639
639
|
int error;
|
640
640
|
|
641
641
|
if (!git_remote_connected(push->remote) &&
|
642
|
-
(error = git_remote_connect(push->remote, GIT_DIRECTION_PUSH, callbacks, push->custom_headers)) < 0)
|
642
|
+
(error = git_remote_connect(push->remote, GIT_DIRECTION_PUSH, callbacks, NULL, push->custom_headers)) < 0)
|
643
643
|
return error;
|
644
644
|
|
645
645
|
if ((error = filter_refs(push->remote)) < 0 ||
|
data/vendor/libgit2/src/rebase.c
CHANGED
@@ -472,6 +472,7 @@ done:
|
|
472
472
|
static int rebase_setupfiles(git_rebase *rebase)
|
473
473
|
{
|
474
474
|
char onto[GIT_OID_HEXSZ], orig_head[GIT_OID_HEXSZ];
|
475
|
+
const char *orig_head_name;
|
475
476
|
|
476
477
|
git_oid_fmt(onto, &rebase->onto_id);
|
477
478
|
git_oid_fmt(orig_head, &rebase->orig_head_id);
|
@@ -481,8 +482,11 @@ static int rebase_setupfiles(git_rebase *rebase)
|
|
481
482
|
return -1;
|
482
483
|
}
|
483
484
|
|
485
|
+
orig_head_name = rebase->head_detached ? ORIG_DETACHED_HEAD :
|
486
|
+
rebase->orig_head_name;
|
487
|
+
|
484
488
|
if (git_repository__set_orig_head(rebase->repo, &rebase->orig_head_id) < 0 ||
|
485
|
-
rebase_setupfile(rebase, HEAD_NAME_FILE, -1, "%s\n",
|
489
|
+
rebase_setupfile(rebase, HEAD_NAME_FILE, -1, "%s\n", orig_head_name) < 0 ||
|
486
490
|
rebase_setupfile(rebase, ONTO_FILE, -1, "%.*s\n", GIT_OID_HEXSZ, onto) < 0 ||
|
487
491
|
rebase_setupfile(rebase, ORIG_HEAD_FILE, -1, "%.*s\n", GIT_OID_HEXSZ, orig_head) < 0 ||
|
488
492
|
rebase_setupfile(rebase, QUIET_FILE, -1, rebase->quiet ? "t\n" : "\n") < 0)
|
@@ -626,8 +630,12 @@ static int rebase_init_merge(
|
|
626
630
|
rebase->state_path = git_buf_detach(&state_path);
|
627
631
|
GITERR_CHECK_ALLOC(rebase->state_path);
|
628
632
|
|
629
|
-
|
630
|
-
|
633
|
+
if (branch->ref_name) {
|
634
|
+
rebase->orig_head_name = git__strdup(branch->ref_name);
|
635
|
+
GITERR_CHECK_ALLOC(rebase->orig_head_name);
|
636
|
+
} else {
|
637
|
+
rebase->head_detached = 1;
|
638
|
+
}
|
631
639
|
|
632
640
|
rebase->onto_name = git__strdup(rebase_onto_name(onto));
|
633
641
|
GITERR_CHECK_ALLOC(rebase->onto_name);
|
@@ -844,6 +852,7 @@ static int rebase_next_inmemory(
|
|
844
852
|
git_tree *current_tree = NULL, *head_tree = NULL, *parent_tree = NULL;
|
845
853
|
git_rebase_operation *operation;
|
846
854
|
git_index *index = NULL;
|
855
|
+
unsigned int parent_count;
|
847
856
|
int error;
|
848
857
|
|
849
858
|
*out = NULL;
|
@@ -851,10 +860,20 @@ static int rebase_next_inmemory(
|
|
851
860
|
operation = git_array_get(rebase->operations, rebase->current);
|
852
861
|
|
853
862
|
if ((error = git_commit_lookup(¤t_commit, rebase->repo, &operation->id)) < 0 ||
|
854
|
-
(error = git_commit_tree(¤t_tree, current_commit)) < 0
|
855
|
-
|
856
|
-
|
857
|
-
|
863
|
+
(error = git_commit_tree(¤t_tree, current_commit)) < 0)
|
864
|
+
goto done;
|
865
|
+
|
866
|
+
if ((parent_count = git_commit_parentcount(current_commit)) > 1) {
|
867
|
+
giterr_set(GITERR_REBASE, "Cannot rebase a merge commit");
|
868
|
+
error = -1;
|
869
|
+
goto done;
|
870
|
+
} else if (parent_count) {
|
871
|
+
if ((error = git_commit_parent(&parent_commit, current_commit, 0)) < 0 ||
|
872
|
+
(error = git_commit_tree(&parent_tree, parent_commit)) < 0)
|
873
|
+
goto done;
|
874
|
+
}
|
875
|
+
|
876
|
+
if ((error = git_commit_tree(&head_tree, rebase->last_commit)) < 0 ||
|
858
877
|
(error = git_merge_trees(&index, rebase->repo, parent_tree, head_tree, current_tree, &rebase->options.merge_options)) < 0)
|
859
878
|
goto done;
|
860
879
|
|
@@ -1254,42 +1273,33 @@ done:
|
|
1254
1273
|
return error;
|
1255
1274
|
}
|
1256
1275
|
|
1257
|
-
int
|
1258
|
-
git_rebase *rebase,
|
1259
|
-
const git_signature *signature)
|
1276
|
+
static int return_to_orig_head(git_rebase *rebase)
|
1260
1277
|
{
|
1261
1278
|
git_reference *terminal_ref = NULL, *branch_ref = NULL, *head_ref = NULL;
|
1262
1279
|
git_commit *terminal_commit = NULL;
|
1263
1280
|
git_buf branch_msg = GIT_BUF_INIT, head_msg = GIT_BUF_INIT;
|
1264
1281
|
char onto[GIT_OID_HEXSZ];
|
1265
|
-
int error;
|
1266
|
-
|
1267
|
-
assert(rebase);
|
1268
|
-
|
1269
|
-
if (rebase->inmemory)
|
1270
|
-
return 0;
|
1282
|
+
int error = 0;
|
1271
1283
|
|
1272
1284
|
git_oid_fmt(onto, &rebase->onto_id);
|
1273
1285
|
|
1274
|
-
if ((error = git_buf_printf(&branch_msg,
|
1275
|
-
rebase
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1286
|
+
if ((error = git_buf_printf(&branch_msg,
|
1287
|
+
"rebase finished: %s onto %.*s",
|
1288
|
+
rebase->orig_head_name, GIT_OID_HEXSZ, onto)) == 0 &&
|
1289
|
+
(error = git_buf_printf(&head_msg,
|
1290
|
+
"rebase finished: returning to %s",
|
1291
|
+
rebase->orig_head_name)) == 0 &&
|
1292
|
+
(error = git_repository_head(&terminal_ref, rebase->repo)) == 0 &&
|
1279
1293
|
(error = git_reference_peel((git_object **)&terminal_commit,
|
1280
|
-
terminal_ref, GIT_OBJ_COMMIT))
|
1294
|
+
terminal_ref, GIT_OBJ_COMMIT)) == 0 &&
|
1281
1295
|
(error = git_reference_create_matching(&branch_ref,
|
1282
|
-
rebase->repo, rebase->orig_head_name,
|
1283
|
-
|
1284
|
-
|
1296
|
+
rebase->repo, rebase->orig_head_name,
|
1297
|
+
git_commit_id(terminal_commit), 1,
|
1298
|
+
&rebase->orig_head_id, branch_msg.ptr)) == 0)
|
1299
|
+
error = git_reference_symbolic_create(&head_ref,
|
1285
1300
|
rebase->repo, GIT_HEAD_FILE, rebase->orig_head_name, 1,
|
1286
|
-
head_msg.ptr)
|
1287
|
-
(error = rebase_copy_notes(rebase, signature)) < 0)
|
1288
|
-
goto done;
|
1289
|
-
|
1290
|
-
error = rebase_cleanup(rebase);
|
1301
|
+
head_msg.ptr);
|
1291
1302
|
|
1292
|
-
done:
|
1293
1303
|
git_buf_free(&head_msg);
|
1294
1304
|
git_buf_free(&branch_msg);
|
1295
1305
|
git_commit_free(terminal_commit);
|
@@ -1300,6 +1310,26 @@ done:
|
|
1300
1310
|
return error;
|
1301
1311
|
}
|
1302
1312
|
|
1313
|
+
int git_rebase_finish(
|
1314
|
+
git_rebase *rebase,
|
1315
|
+
const git_signature *signature)
|
1316
|
+
{
|
1317
|
+
int error = 0;
|
1318
|
+
|
1319
|
+
assert(rebase);
|
1320
|
+
|
1321
|
+
if (rebase->inmemory)
|
1322
|
+
return 0;
|
1323
|
+
|
1324
|
+
if (!rebase->head_detached)
|
1325
|
+
error = return_to_orig_head(rebase);
|
1326
|
+
|
1327
|
+
if (error == 0 && (error = rebase_copy_notes(rebase, signature)) == 0)
|
1328
|
+
error = rebase_cleanup(rebase);
|
1329
|
+
|
1330
|
+
return error;
|
1331
|
+
}
|
1332
|
+
|
1303
1333
|
size_t git_rebase_operation_entrycount(git_rebase *rebase)
|
1304
1334
|
{
|
1305
1335
|
assert(rebase);
|
@@ -962,6 +962,7 @@ static int packed_write(refdb_fs_backend *backend)
|
|
962
962
|
|
963
963
|
for (i = 0; i < git_sortedcache_entrycount(refcache); ++i) {
|
964
964
|
struct packref *ref = git_sortedcache_entry(refcache, i);
|
965
|
+
assert(ref);
|
965
966
|
|
966
967
|
if (packed_find_peel(backend, ref) < 0)
|
967
968
|
goto fail;
|
data/vendor/libgit2/src/refs.c
CHANGED
@@ -105,6 +105,18 @@ git_reference *git_reference__set_name(
|
|
105
105
|
return rewrite;
|
106
106
|
}
|
107
107
|
|
108
|
+
int git_reference_dup(git_reference **dest, git_reference *source)
|
109
|
+
{
|
110
|
+
if (source->type == GIT_REF_SYMBOLIC)
|
111
|
+
*dest = git_reference__alloc_symbolic(source->name, source->target.symbolic);
|
112
|
+
else
|
113
|
+
*dest = git_reference__alloc(source->name, &source->target.oid, &source->peel);
|
114
|
+
|
115
|
+
GITERR_CHECK_ALLOC(*dest);
|
116
|
+
|
117
|
+
return 0;
|
118
|
+
}
|
119
|
+
|
108
120
|
void git_reference_free(git_reference *reference)
|
109
121
|
{
|
110
122
|
if (reference == NULL)
|
@@ -289,6 +301,9 @@ cleanup:
|
|
289
301
|
"Could not use '%s' as valid reference name", git_buf_cstr(&name));
|
290
302
|
}
|
291
303
|
|
304
|
+
if (error == GIT_ENOTFOUND)
|
305
|
+
giterr_set(GITERR_REFERENCE, "no reference found for shorthand '%s'", refname);
|
306
|
+
|
292
307
|
git_buf_free(&name);
|
293
308
|
git_buf_free(&refnamebuf);
|
294
309
|
return error;
|
@@ -445,7 +460,7 @@ int git_reference_create_matching(
|
|
445
460
|
{
|
446
461
|
int error;
|
447
462
|
git_signature *who = NULL;
|
448
|
-
|
463
|
+
|
449
464
|
assert(id);
|
450
465
|
|
451
466
|
if ((error = git_reference__log_signature(&who, repo)) < 0)
|
data/vendor/libgit2/src/remote.c
CHANGED
@@ -695,7 +695,7 @@ static int set_transport_custom_headers(git_transport *t, const git_strarray *cu
|
|
695
695
|
return t->set_custom_headers(t, custom_headers);
|
696
696
|
}
|
697
697
|
|
698
|
-
int git_remote_connect(git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_strarray *custom_headers)
|
698
|
+
int git_remote_connect(git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_proxy_options *proxy, const git_strarray *custom_headers)
|
699
699
|
{
|
700
700
|
git_transport *t;
|
701
701
|
const char *url;
|
@@ -714,6 +714,9 @@ int git_remote_connect(git_remote *remote, git_direction direction, const git_re
|
|
714
714
|
payload = callbacks->payload;
|
715
715
|
}
|
716
716
|
|
717
|
+
if (proxy)
|
718
|
+
GITERR_CHECK_VERSION(proxy, GIT_PROXY_OPTIONS_VERSION, "git_proxy_options");
|
719
|
+
|
717
720
|
t = remote->transport;
|
718
721
|
|
719
722
|
url = git_remote__urlfordirection(remote, direction);
|
@@ -738,7 +741,7 @@ int git_remote_connect(git_remote *remote, git_direction direction, const git_re
|
|
738
741
|
goto on_error;
|
739
742
|
|
740
743
|
if ((error = set_transport_callbacks(t, callbacks)) < 0 ||
|
741
|
-
(error = t->connect(t, url, credentials, payload, direction, flags)) != 0)
|
744
|
+
(error = t->connect(t, url, credentials, payload, proxy, direction, flags)) != 0)
|
742
745
|
goto on_error;
|
743
746
|
|
744
747
|
remote->transport = t;
|
@@ -896,6 +899,7 @@ int git_remote_download(git_remote *remote, const git_strarray *refspecs, const
|
|
896
899
|
git_vector *to_active, specs = GIT_VECTOR_INIT, refs = GIT_VECTOR_INIT;
|
897
900
|
const git_remote_callbacks *cbs = NULL;
|
898
901
|
const git_strarray *custom_headers = NULL;
|
902
|
+
const git_proxy_options *proxy = NULL;
|
899
903
|
|
900
904
|
assert(remote);
|
901
905
|
|
@@ -903,10 +907,12 @@ int git_remote_download(git_remote *remote, const git_strarray *refspecs, const
|
|
903
907
|
GITERR_CHECK_VERSION(&opts->callbacks, GIT_REMOTE_CALLBACKS_VERSION, "git_remote_callbacks");
|
904
908
|
cbs = &opts->callbacks;
|
905
909
|
custom_headers = &opts->custom_headers;
|
910
|
+
GITERR_CHECK_VERSION(&opts->proxy_opts, GIT_PROXY_OPTIONS_VERSION, "git_proxy_options");
|
911
|
+
proxy = &opts->proxy_opts;
|
906
912
|
}
|
907
913
|
|
908
914
|
if (!git_remote_connected(remote) &&
|
909
|
-
(error = git_remote_connect(remote, GIT_DIRECTION_FETCH, cbs, custom_headers)) < 0)
|
915
|
+
(error = git_remote_connect(remote, GIT_DIRECTION_FETCH, cbs, proxy, custom_headers)) < 0)
|
910
916
|
goto on_error;
|
911
917
|
|
912
918
|
if (ls_to_vector(&refs, remote) < 0)
|
@@ -971,6 +977,7 @@ int git_remote_fetch(
|
|
971
977
|
git_buf reflog_msg_buf = GIT_BUF_INIT;
|
972
978
|
const git_remote_callbacks *cbs = NULL;
|
973
979
|
const git_strarray *custom_headers = NULL;
|
980
|
+
const git_proxy_options *proxy = NULL;
|
974
981
|
|
975
982
|
if (opts) {
|
976
983
|
GITERR_CHECK_VERSION(&opts->callbacks, GIT_REMOTE_CALLBACKS_VERSION, "git_remote_callbacks");
|
@@ -978,10 +985,12 @@ int git_remote_fetch(
|
|
978
985
|
custom_headers = &opts->custom_headers;
|
979
986
|
update_fetchhead = opts->update_fetchhead;
|
980
987
|
tagopt = opts->download_tags;
|
988
|
+
GITERR_CHECK_VERSION(&opts->proxy_opts, GIT_PROXY_OPTIONS_VERSION, "git_proxy_options");
|
989
|
+
proxy = &opts->proxy_opts;
|
981
990
|
}
|
982
991
|
|
983
992
|
/* Connect and download everything */
|
984
|
-
if ((error = git_remote_connect(remote, GIT_DIRECTION_FETCH, cbs, custom_headers)) != 0)
|
993
|
+
if ((error = git_remote_connect(remote, GIT_DIRECTION_FETCH, cbs, proxy, custom_headers)) != 0)
|
985
994
|
return error;
|
986
995
|
|
987
996
|
error = git_remote_download(remote, refspecs, opts);
|
@@ -2393,16 +2402,18 @@ int git_remote_upload(git_remote *remote, const git_strarray *refspecs, const gi
|
|
2393
2402
|
git_refspec *spec;
|
2394
2403
|
const git_remote_callbacks *cbs = NULL;
|
2395
2404
|
const git_strarray *custom_headers = NULL;
|
2405
|
+
const git_proxy_options *proxy = NULL;
|
2396
2406
|
|
2397
2407
|
assert(remote);
|
2398
2408
|
|
2399
2409
|
if (opts) {
|
2400
2410
|
cbs = &opts->callbacks;
|
2401
2411
|
custom_headers = &opts->custom_headers;
|
2412
|
+
proxy = &opts->proxy_opts;
|
2402
2413
|
}
|
2403
2414
|
|
2404
2415
|
if (!git_remote_connected(remote) &&
|
2405
|
-
(error = git_remote_connect(remote, GIT_DIRECTION_PUSH, cbs, custom_headers)) < 0)
|
2416
|
+
(error = git_remote_connect(remote, GIT_DIRECTION_PUSH, cbs, proxy, custom_headers)) < 0)
|
2406
2417
|
goto cleanup;
|
2407
2418
|
|
2408
2419
|
free_refspecs(&remote->active_refspecs);
|
@@ -2452,16 +2463,19 @@ int git_remote_push(git_remote *remote, const git_strarray *refspecs, const git_
|
|
2452
2463
|
int error;
|
2453
2464
|
const git_remote_callbacks *cbs = NULL;
|
2454
2465
|
const git_strarray *custom_headers = NULL;
|
2466
|
+
const git_proxy_options *proxy = NULL;
|
2455
2467
|
|
2456
2468
|
if (opts) {
|
2457
2469
|
GITERR_CHECK_VERSION(&opts->callbacks, GIT_REMOTE_CALLBACKS_VERSION, "git_remote_callbacks");
|
2458
2470
|
cbs = &opts->callbacks;
|
2459
2471
|
custom_headers = &opts->custom_headers;
|
2472
|
+
GITERR_CHECK_VERSION(&opts->proxy_opts, GIT_PROXY_OPTIONS_VERSION, "git_proxy_options");
|
2473
|
+
proxy = &opts->proxy_opts;
|
2460
2474
|
}
|
2461
2475
|
|
2462
2476
|
assert(remote && refspecs);
|
2463
2477
|
|
2464
|
-
if ((error = git_remote_connect(remote, GIT_DIRECTION_PUSH, cbs, custom_headers)) < 0)
|
2478
|
+
if ((error = git_remote_connect(remote, GIT_DIRECTION_PUSH, cbs, proxy, custom_headers)) < 0)
|
2465
2479
|
return error;
|
2466
2480
|
|
2467
2481
|
if ((error = git_remote_upload(remote, refspecs, opts)) < 0)
|
@@ -2162,7 +2162,7 @@ int git_repository_set_head_detached_from_annotated(
|
|
2162
2162
|
{
|
2163
2163
|
assert(repo && commitish);
|
2164
2164
|
|
2165
|
-
return detach(repo, git_annotated_commit_id(commitish), commitish->
|
2165
|
+
return detach(repo, git_annotated_commit_id(commitish), commitish->description);
|
2166
2166
|
}
|
2167
2167
|
|
2168
2168
|
int git_repository_detach_head(git_repository* repo)
|
data/vendor/libgit2/src/reset.c
CHANGED
@@ -195,5 +195,5 @@ int git_reset_from_annotated(
|
|
195
195
|
git_reset_t reset_type,
|
196
196
|
const git_checkout_options *checkout_opts)
|
197
197
|
{
|
198
|
-
return reset(repo, (git_object *) commit->commit, commit->
|
198
|
+
return reset(repo, (git_object *) commit->commit, commit->description, reset_type, checkout_opts);
|
199
199
|
}
|
@@ -71,12 +71,18 @@ static int config_level_to_sysdir(int config_level)
|
|
71
71
|
}
|
72
72
|
|
73
73
|
extern char *git__user_agent;
|
74
|
+
extern char *git__ssl_ciphers;
|
74
75
|
|
75
76
|
const char *git_libgit2__user_agent()
|
76
77
|
{
|
77
78
|
return git__user_agent;
|
78
79
|
}
|
79
80
|
|
81
|
+
const char *git_libgit2__ssl_ciphers()
|
82
|
+
{
|
83
|
+
return git__ssl_ciphers;
|
84
|
+
}
|
85
|
+
|
80
86
|
int git_libgit2_opts(int key, ...)
|
81
87
|
{
|
82
88
|
int error = 0;
|
@@ -169,7 +175,7 @@ int git_libgit2_opts(int key, ...)
|
|
169
175
|
}
|
170
176
|
}
|
171
177
|
#else
|
172
|
-
giterr_set(GITERR_NET, "
|
178
|
+
giterr_set(GITERR_NET, "cannot set certificate locations: OpenSSL is not enabled");
|
173
179
|
error = -1;
|
174
180
|
#endif
|
175
181
|
break;
|
@@ -187,6 +193,22 @@ int git_libgit2_opts(int key, ...)
|
|
187
193
|
git_object__strict_input_validation = (va_arg(ap, int) != 0);
|
188
194
|
break;
|
189
195
|
|
196
|
+
case GIT_OPT_SET_SSL_CIPHERS:
|
197
|
+
#ifdef GIT_OPENSSL
|
198
|
+
{
|
199
|
+
git__free(git__ssl_ciphers);
|
200
|
+
git__ssl_ciphers = git__strdup(va_arg(ap, const char *));
|
201
|
+
if (!git__ssl_ciphers) {
|
202
|
+
giterr_set_oom();
|
203
|
+
error = -1;
|
204
|
+
}
|
205
|
+
}
|
206
|
+
#else
|
207
|
+
giterr_set(GITERR_NET, "cannot set custom ciphers: OpenSSL is not enabled");
|
208
|
+
error = -1;
|
209
|
+
#endif
|
210
|
+
break;
|
211
|
+
|
190
212
|
default:
|
191
213
|
giterr_set(GITERR_INVALID, "invalid option key");
|
192
214
|
error = -1;
|