rugged 0.26.0b3 → 0.26.0b4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/ext/rugged/extconf.rb +10 -7
- data/ext/rugged/rugged.c +4 -6
- data/ext/rugged/rugged_repo.c +1 -1
- data/ext/rugged/rugged_revwalk.c +4 -4
- data/ext/rugged/rugged_tree.c +2 -2
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +13 -6
- data/vendor/libgit2/COPYING +33 -0
- data/vendor/libgit2/include/git2/branch.h +12 -0
- data/vendor/libgit2/include/git2/commit.h +6 -3
- data/vendor/libgit2/include/git2/common.h +11 -0
- data/vendor/libgit2/include/git2/errors.h +2 -0
- data/vendor/libgit2/include/git2/index.h +7 -6
- data/vendor/libgit2/include/git2/repository.h +91 -0
- data/vendor/libgit2/include/git2/stash.h +2 -2
- data/vendor/libgit2/include/git2/types.h +3 -0
- data/vendor/libgit2/include/git2/worktree.h +161 -0
- data/vendor/libgit2/src/attr.c +24 -16
- data/vendor/libgit2/src/attr_file.h +1 -1
- data/vendor/libgit2/src/attrcache.c +11 -10
- data/vendor/libgit2/src/attrcache.h +1 -4
- data/vendor/libgit2/src/blob.c +2 -2
- data/vendor/libgit2/src/branch.c +63 -0
- data/vendor/libgit2/src/buffer.h +2 -1
- data/vendor/libgit2/src/cache.c +21 -25
- data/vendor/libgit2/src/cache.h +1 -1
- data/vendor/libgit2/src/checkout.c +0 -2
- data/vendor/libgit2/src/cherrypick.c +2 -2
- data/vendor/libgit2/src/clone.c +2 -3
- data/vendor/libgit2/src/commit.c +8 -4
- data/vendor/libgit2/src/config_file.c +1 -3
- data/vendor/libgit2/src/describe.c +1 -3
- data/vendor/libgit2/src/diff_driver.c +2 -4
- data/vendor/libgit2/src/fetchhead.c +2 -2
- data/vendor/libgit2/src/fileops.c +1 -3
- data/vendor/libgit2/src/hash.h +5 -3
- data/vendor/libgit2/src/hash/hash_collisiondetect.h +57 -0
- data/vendor/libgit2/src/hash/sha1dc/sha1.c +1149 -0
- data/vendor/libgit2/src/hash/sha1dc/sha1.h +94 -0
- data/vendor/libgit2/src/hash/sha1dc/ubc_check.c +361 -0
- data/vendor/libgit2/src/hash/sha1dc/ubc_check.h +35 -0
- data/vendor/libgit2/src/idxmap.c +133 -0
- data/vendor/libgit2/src/idxmap.h +22 -60
- data/vendor/libgit2/src/ignore.c +7 -1
- data/vendor/libgit2/src/ignore.h +1 -1
- data/vendor/libgit2/src/index.c +11 -14
- data/vendor/libgit2/src/indexer.c +8 -11
- data/vendor/libgit2/src/merge.c +5 -5
- data/vendor/libgit2/src/mwindow.c +1 -3
- data/vendor/libgit2/src/odb.c +3 -3
- data/vendor/libgit2/src/odb.h +3 -0
- data/vendor/libgit2/src/odb_mempack.c +11 -18
- data/vendor/libgit2/src/offmap.c +83 -0
- data/vendor/libgit2/src/offmap.h +14 -34
- data/vendor/libgit2/src/oidmap.c +105 -0
- data/vendor/libgit2/src/oidmap.h +19 -22
- data/vendor/libgit2/src/pack-objects.c +10 -13
- data/vendor/libgit2/src/pack.c +17 -26
- data/vendor/libgit2/src/path.c +45 -24
- data/vendor/libgit2/src/rebase.c +3 -3
- data/vendor/libgit2/src/refdb_fs.c +81 -46
- data/vendor/libgit2/src/refs.c +13 -3
- data/vendor/libgit2/src/remote.c +6 -2
- data/vendor/libgit2/src/repository.c +318 -46
- data/vendor/libgit2/src/repository.h +5 -2
- data/vendor/libgit2/src/revert.c +2 -2
- data/vendor/libgit2/src/revwalk.c +6 -8
- data/vendor/libgit2/src/settings.c +5 -0
- data/vendor/libgit2/src/sortedcache.c +3 -5
- data/vendor/libgit2/src/strmap.c +95 -0
- data/vendor/libgit2/src/strmap.h +17 -37
- data/vendor/libgit2/src/submodule.c +12 -8
- data/vendor/libgit2/src/thread-utils.h +6 -0
- data/vendor/libgit2/src/transaction.c +5 -17
- data/vendor/libgit2/src/transports/local.c +2 -1
- data/vendor/libgit2/src/transports/smart.h +2 -0
- data/vendor/libgit2/src/transports/smart_protocol.c +3 -1
- data/vendor/libgit2/src/tree.c +2 -4
- data/vendor/libgit2/src/unix/posix.h +1 -1
- data/vendor/libgit2/src/worktree.c +432 -0
- data/vendor/libgit2/src/worktree.h +35 -0
- metadata +13 -2
@@ -126,8 +126,9 @@ struct git_repository {
|
|
126
126
|
git_attr_cache *attrcache;
|
127
127
|
git_diff_driver_registry *diff_drivers;
|
128
128
|
|
129
|
-
char *
|
130
|
-
char *
|
129
|
+
char *gitlink;
|
130
|
+
char *gitdir;
|
131
|
+
char *commondir;
|
131
132
|
char *workdir;
|
132
133
|
char *namespace;
|
133
134
|
|
@@ -137,6 +138,7 @@ struct git_repository {
|
|
137
138
|
git_array_t(git_buf) reserved_names;
|
138
139
|
|
139
140
|
unsigned is_bare:1;
|
141
|
+
unsigned is_worktree:1;
|
140
142
|
|
141
143
|
unsigned int lru_counter;
|
142
144
|
|
@@ -152,6 +154,7 @@ GIT_INLINE(git_attr_cache *) git_repository_attr_cache(git_repository *repo)
|
|
152
154
|
}
|
153
155
|
|
154
156
|
int git_repository_head_tree(git_tree **tree, git_repository *repo);
|
157
|
+
int git_repository_create_head(const char *git_dir, const char *ref_name);
|
155
158
|
|
156
159
|
/*
|
157
160
|
* Weak pointers to repository internals.
|
data/vendor/libgit2/src/revert.c
CHANGED
@@ -27,7 +27,7 @@ static int write_revert_head(
|
|
27
27
|
git_buf file_path = GIT_BUF_INIT;
|
28
28
|
int error = 0;
|
29
29
|
|
30
|
-
if ((error = git_buf_joinpath(&file_path, repo->
|
30
|
+
if ((error = git_buf_joinpath(&file_path, repo->gitdir, GIT_REVERT_HEAD_FILE)) >= 0 &&
|
31
31
|
(error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_FORCE, GIT_REVERT_FILE_MODE)) >= 0 &&
|
32
32
|
(error = git_filebuf_printf(&file, "%s\n", commit_oidstr)) >= 0)
|
33
33
|
error = git_filebuf_commit(&file);
|
@@ -49,7 +49,7 @@ static int write_merge_msg(
|
|
49
49
|
git_buf file_path = GIT_BUF_INIT;
|
50
50
|
int error = 0;
|
51
51
|
|
52
|
-
if ((error = git_buf_joinpath(&file_path, repo->
|
52
|
+
if ((error = git_buf_joinpath(&file_path, repo->gitdir, GIT_MERGE_MSG_FILE)) < 0 ||
|
53
53
|
(error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_FORCE, GIT_REVERT_FILE_MODE)) < 0 ||
|
54
54
|
(error = git_filebuf_printf(&file, "Revert \"%s\"\n\nThis reverts commit %s.\n",
|
55
55
|
commit_msgline, commit_oidstr)) < 0)
|
@@ -15,8 +15,6 @@
|
|
15
15
|
#include "merge.h"
|
16
16
|
#include "vector.h"
|
17
17
|
|
18
|
-
GIT__USE_OIDMAP
|
19
|
-
|
20
18
|
git_commit_list_node *git_revwalk__commit_lookup(
|
21
19
|
git_revwalk *walk, const git_oid *oid)
|
22
20
|
{
|
@@ -25,9 +23,9 @@ git_commit_list_node *git_revwalk__commit_lookup(
|
|
25
23
|
int ret;
|
26
24
|
|
27
25
|
/* lookup and reserve space if not already present */
|
28
|
-
pos =
|
29
|
-
if (
|
30
|
-
return
|
26
|
+
pos = git_oidmap_lookup_index(walk->commits, oid);
|
27
|
+
if (git_oidmap_valid_index(walk->commits, pos))
|
28
|
+
return git_oidmap_value_at(walk->commits, pos);
|
31
29
|
|
32
30
|
commit = git_commit_list_alloc_node(walk);
|
33
31
|
if (commit == NULL)
|
@@ -35,9 +33,9 @@ git_commit_list_node *git_revwalk__commit_lookup(
|
|
35
33
|
|
36
34
|
git_oid_cpy(&commit->oid, oid);
|
37
35
|
|
38
|
-
pos =
|
36
|
+
pos = git_oidmap_put(walk->commits, &commit->oid, &ret);
|
39
37
|
assert(ret != 0);
|
40
|
-
|
38
|
+
git_oidmap_set_value_at(walk->commits, pos, commit);
|
41
39
|
|
42
40
|
return commit;
|
43
41
|
}
|
@@ -702,7 +700,7 @@ void git_revwalk_reset(git_revwalk *walk)
|
|
702
700
|
|
703
701
|
assert(walk);
|
704
702
|
|
705
|
-
|
703
|
+
git_oidmap_foreach_value(walk->commits, commit, {
|
706
704
|
commit->seen = 0;
|
707
705
|
commit->in_degree = 0;
|
708
706
|
commit->topo_delay = 0;
|
@@ -16,6 +16,7 @@
|
|
16
16
|
#include "global.h"
|
17
17
|
#include "object.h"
|
18
18
|
#include "refs.h"
|
19
|
+
#include "transports/smart.h"
|
19
20
|
|
20
21
|
void git_libgit2_version(int *major, int *minor, int *rev)
|
21
22
|
{
|
@@ -222,6 +223,10 @@ int git_libgit2_opts(int key, ...)
|
|
222
223
|
}
|
223
224
|
break;
|
224
225
|
|
226
|
+
case GIT_OPT_ENABLE_OFS_DELTA:
|
227
|
+
git_smart__ofs_delta_enabled = (va_arg(ap, int) != 0);
|
228
|
+
break;
|
229
|
+
|
225
230
|
default:
|
226
231
|
giterr_set(GITERR_INVALID, "invalid option key");
|
227
232
|
error = -1;
|
@@ -1,7 +1,5 @@
|
|
1
1
|
#include "sortedcache.h"
|
2
2
|
|
3
|
-
GIT__USE_STRMAP
|
4
|
-
|
5
3
|
int git_sortedcache_new(
|
6
4
|
git_sortedcache **out,
|
7
5
|
size_t item_path_offset,
|
@@ -294,13 +292,13 @@ int git_sortedcache_upsert(void **out, git_sortedcache *sc, const char *key)
|
|
294
292
|
item_key = ((char *)item) + sc->item_path_offset;
|
295
293
|
memcpy(item_key, key, keylen);
|
296
294
|
|
297
|
-
pos =
|
295
|
+
pos = git_strmap_put(sc->map, item_key, &error);
|
298
296
|
if (error < 0)
|
299
297
|
goto done;
|
300
298
|
|
301
299
|
if (!error)
|
302
|
-
|
303
|
-
|
300
|
+
git_strmap_set_key_at(sc->map, pos, item_key);
|
301
|
+
git_strmap_set_value_at(sc->map, pos, item);
|
304
302
|
|
305
303
|
error = git_vector_insert(&sc->items, item);
|
306
304
|
if (error < 0)
|
data/vendor/libgit2/src/strmap.c
CHANGED
@@ -7,6 +7,101 @@
|
|
7
7
|
|
8
8
|
#include "strmap.h"
|
9
9
|
|
10
|
+
__KHASH_IMPL(str, static kh_inline, const char *, void *, 1, kh_str_hash_func, kh_str_hash_equal)
|
11
|
+
|
12
|
+
int git_strmap_alloc(git_strmap **map)
|
13
|
+
{
|
14
|
+
if ((*map = kh_init(str)) == NULL) {
|
15
|
+
giterr_set_oom();
|
16
|
+
return -1;
|
17
|
+
}
|
18
|
+
|
19
|
+
return 0;
|
20
|
+
}
|
21
|
+
|
22
|
+
void git_strmap__free(git_strmap *map)
|
23
|
+
{
|
24
|
+
kh_destroy(str, map);
|
25
|
+
}
|
26
|
+
|
27
|
+
void git_strmap_clear(git_strmap *map)
|
28
|
+
{
|
29
|
+
kh_clear(str, map);
|
30
|
+
}
|
31
|
+
|
32
|
+
size_t git_strmap_num_entries(git_strmap *map)
|
33
|
+
{
|
34
|
+
return kh_size(map);
|
35
|
+
}
|
36
|
+
|
37
|
+
size_t git_strmap_lookup_index(git_strmap *map, const char *key)
|
38
|
+
{
|
39
|
+
return kh_get(str, map, key);
|
40
|
+
}
|
41
|
+
|
42
|
+
int git_strmap_valid_index(git_strmap *map, size_t idx)
|
43
|
+
{
|
44
|
+
return idx != kh_end(map);
|
45
|
+
}
|
46
|
+
|
47
|
+
int git_strmap_exists(git_strmap *map, const char *key)
|
48
|
+
{
|
49
|
+
return kh_get(str, map, key) != kh_end(map);
|
50
|
+
}
|
51
|
+
|
52
|
+
int git_strmap_has_data(git_strmap *map, size_t idx)
|
53
|
+
{
|
54
|
+
return kh_exist(map, idx);
|
55
|
+
}
|
56
|
+
|
57
|
+
const char *git_strmap_key(git_strmap *map, size_t idx)
|
58
|
+
{
|
59
|
+
return kh_key(map, idx);
|
60
|
+
}
|
61
|
+
|
62
|
+
void git_strmap_set_key_at(git_strmap *map, size_t idx, char *key)
|
63
|
+
{
|
64
|
+
kh_val(map, idx) = key;
|
65
|
+
}
|
66
|
+
|
67
|
+
void *git_strmap_value_at(git_strmap *map, size_t idx)
|
68
|
+
{
|
69
|
+
return kh_val(map, idx);
|
70
|
+
}
|
71
|
+
|
72
|
+
void git_strmap_set_value_at(git_strmap *map, size_t idx, void *value)
|
73
|
+
{
|
74
|
+
kh_val(map, idx) = value;
|
75
|
+
}
|
76
|
+
|
77
|
+
void git_strmap_delete_at(git_strmap *map, size_t idx)
|
78
|
+
{
|
79
|
+
kh_del(str, map, idx);
|
80
|
+
}
|
81
|
+
|
82
|
+
int git_strmap_put(git_strmap *map, const char *key, int *err)
|
83
|
+
{
|
84
|
+
return kh_put(str, map, key, err);
|
85
|
+
}
|
86
|
+
|
87
|
+
void git_strmap_insert(git_strmap *map, const char *key, void *value, int *rval)
|
88
|
+
{
|
89
|
+
khiter_t idx = kh_put(str, map, key, rval);
|
90
|
+
|
91
|
+
if ((*rval) >= 0) {
|
92
|
+
if ((*rval) == 0)
|
93
|
+
kh_key(map, idx) = key;
|
94
|
+
kh_val(map, idx) = value;
|
95
|
+
}
|
96
|
+
}
|
97
|
+
|
98
|
+
void git_strmap_delete(git_strmap *map, const char *key)
|
99
|
+
{
|
100
|
+
khiter_t idx = git_strmap_lookup_index(map, key);
|
101
|
+
if (git_strmap_valid_index(map, idx))
|
102
|
+
git_strmap_delete_at(map, idx);
|
103
|
+
}
|
104
|
+
|
10
105
|
int git_strmap_next(
|
11
106
|
void **data,
|
12
107
|
git_strmap_iter* iter,
|
data/vendor/libgit2/src/strmap.h
CHANGED
@@ -20,49 +20,29 @@ __KHASH_TYPE(str, const char *, void *)
|
|
20
20
|
typedef khash_t(str) git_strmap;
|
21
21
|
typedef khiter_t git_strmap_iter;
|
22
22
|
|
23
|
-
|
24
|
-
__KHASH_IMPL(str, static kh_inline, const char *, void *, 1, kh_str_hash_func, kh_str_hash_equal)
|
23
|
+
int git_strmap_alloc(git_strmap **map);
|
25
24
|
|
26
|
-
#define
|
27
|
-
|
25
|
+
#define git_strmap_free(h) git_strmap__free(h); (h) = NULL
|
26
|
+
void git_strmap__free(git_strmap *map);
|
27
|
+
void git_strmap_clear(git_strmap *map);
|
28
28
|
|
29
|
-
|
30
|
-
#define git_strmap_clear(h) kh_clear(str, h)
|
29
|
+
size_t git_strmap_num_entries(git_strmap *map);
|
31
30
|
|
32
|
-
|
31
|
+
size_t git_strmap_lookup_index(git_strmap *map, const char *key);
|
32
|
+
int git_strmap_valid_index(git_strmap *map, size_t idx);
|
33
33
|
|
34
|
-
|
35
|
-
|
34
|
+
int git_strmap_exists(git_strmap *map, const char *key);
|
35
|
+
int git_strmap_has_data(git_strmap *map, size_t idx);
|
36
36
|
|
37
|
-
|
38
|
-
|
37
|
+
const char *git_strmap_key(git_strmap *map, size_t idx);
|
38
|
+
void git_strmap_set_key_at(git_strmap *map, size_t idx, char *key);
|
39
|
+
void *git_strmap_value_at(git_strmap *map, size_t idx);
|
40
|
+
void git_strmap_set_value_at(git_strmap *map, size_t idx, void *value);
|
41
|
+
void git_strmap_delete_at(git_strmap *map, size_t idx);
|
39
42
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
#define git_strmap_delete_at(h, idx) kh_del(str, h, idx)
|
44
|
-
|
45
|
-
#define git_strmap_insert(h, key, val, rval) do { \
|
46
|
-
khiter_t __pos = kh_put(str, h, key, &rval); \
|
47
|
-
if (rval >= 0) { \
|
48
|
-
if (rval == 0) kh_key(h, __pos) = key; \
|
49
|
-
kh_val(h, __pos) = val; \
|
50
|
-
} } while (0)
|
51
|
-
|
52
|
-
#define git_strmap_insert2(h, key, val, oldv, rval) do { \
|
53
|
-
khiter_t __pos = kh_put(str, h, key, &rval); \
|
54
|
-
if (rval >= 0) { \
|
55
|
-
if (rval == 0) { \
|
56
|
-
oldv = kh_val(h, __pos); \
|
57
|
-
kh_key(h, __pos) = key; \
|
58
|
-
} else { oldv = NULL; } \
|
59
|
-
kh_val(h, __pos) = val; \
|
60
|
-
} } while (0)
|
61
|
-
|
62
|
-
#define git_strmap_delete(h, key) do { \
|
63
|
-
khiter_t __pos = git_strmap_lookup_index(h, key); \
|
64
|
-
if (git_strmap_valid_index(h, __pos)) \
|
65
|
-
git_strmap_delete_at(h, __pos); } while (0)
|
43
|
+
int git_strmap_put(git_strmap *map, const char *key, int *err);
|
44
|
+
void git_strmap_insert(git_strmap *map, const char *key, void *value, int *rval);
|
45
|
+
void git_strmap_delete(git_strmap *map, const char *key);
|
66
46
|
|
67
47
|
#define git_strmap_foreach kh_foreach
|
68
48
|
#define git_strmap_foreach_value kh_foreach_value
|
@@ -186,7 +186,7 @@ static int load_submodule_names(git_strmap *out, git_config *cfg)
|
|
186
186
|
ldot = strrchr(entry->name, '.');
|
187
187
|
|
188
188
|
git_buf_put(&buf, fdot + 1, ldot - fdot - 1);
|
189
|
-
git_strmap_insert(out, entry->value, git_buf_detach(&buf), rval);
|
189
|
+
git_strmap_insert(out, entry->value, git_buf_detach(&buf), &rval);
|
190
190
|
if (rval < 0) {
|
191
191
|
giterr_set(GITERR_NOMEMORY, "error inserting submodule into hash table");
|
192
192
|
return -1;
|
@@ -329,7 +329,7 @@ static int submodule_get_or_create(git_submodule **out, git_repository *repo, gi
|
|
329
329
|
if ((error = submodule_alloc(&sm, repo, name)) < 0)
|
330
330
|
return error;
|
331
331
|
|
332
|
-
pos =
|
332
|
+
pos = git_strmap_put(map, sm->name, &error);
|
333
333
|
/* nobody can beat us to adding it */
|
334
334
|
assert(error != 0);
|
335
335
|
if (error < 0) {
|
@@ -555,7 +555,7 @@ int git_submodule_foreach(
|
|
555
555
|
goto done;
|
556
556
|
|
557
557
|
if (!(error = git_vector_init(
|
558
|
-
&snapshot,
|
558
|
+
&snapshot, git_strmap_num_entries(submodules), submodule_cmp))) {
|
559
559
|
|
560
560
|
git_strmap_foreach_value(submodules, sm, {
|
561
561
|
if ((error = git_vector_insert(&snapshot, sm)) < 0)
|
@@ -616,8 +616,10 @@ static int submodule_repo_init(
|
|
616
616
|
* Old style: sub-repo goes directly into repo/<name>/.git/
|
617
617
|
*/
|
618
618
|
if (use_gitlink) {
|
619
|
-
error =
|
620
|
-
|
619
|
+
error = git_repository_item_path(&repodir, parent_repo, GIT_REPOSITORY_ITEM_MODULES);
|
620
|
+
if (error < 0)
|
621
|
+
goto cleanup;
|
622
|
+
error = git_buf_joinpath(&repodir, repodir.ptr, path);
|
621
623
|
if (error < 0)
|
622
624
|
goto cleanup;
|
623
625
|
|
@@ -1084,8 +1086,10 @@ static int submodule_repo_create(
|
|
1084
1086
|
* <repo-dir>/modules/<name>/ with a gitlink in the
|
1085
1087
|
* sub-repo workdir directory to that repository.
|
1086
1088
|
*/
|
1087
|
-
error =
|
1088
|
-
|
1089
|
+
error = git_repository_item_path(&repodir, parent_repo, GIT_REPOSITORY_ITEM_MODULES);
|
1090
|
+
if (error < 0)
|
1091
|
+
goto cleanup;
|
1092
|
+
error = git_buf_joinpath(&repodir, repodir.ptr, path);
|
1089
1093
|
if (error < 0)
|
1090
1094
|
goto cleanup;
|
1091
1095
|
|
@@ -1862,7 +1866,7 @@ static int submodule_load_each(const git_config_entry *entry, void *payload)
|
|
1862
1866
|
goto done;
|
1863
1867
|
}
|
1864
1868
|
|
1865
|
-
git_strmap_insert(map, sm->name, sm, error);
|
1869
|
+
git_strmap_insert(map, sm->name, sm, &error);
|
1866
1870
|
assert(error != 0);
|
1867
1871
|
if (error < 0)
|
1868
1872
|
goto done;
|
@@ -7,6 +7,12 @@
|
|
7
7
|
#ifndef INCLUDE_thread_utils_h__
|
8
8
|
#define INCLUDE_thread_utils_h__
|
9
9
|
|
10
|
+
#if defined(__GNUC__) && defined(GIT_THREADS)
|
11
|
+
# if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1))
|
12
|
+
# error Atomic primitives do not exist on this version of gcc; configure libgit2 with -DTHREADSAFE=OFF
|
13
|
+
# endif
|
14
|
+
#endif
|
15
|
+
|
10
16
|
/* Common operations even if threading has been disabled */
|
11
17
|
typedef struct {
|
12
18
|
#if defined(GIT_WIN32)
|
@@ -19,8 +19,6 @@
|
|
19
19
|
#include "git2/sys/refs.h"
|
20
20
|
#include "git2/sys/refdb_backend.h"
|
21
21
|
|
22
|
-
GIT__USE_STRMAP
|
23
|
-
|
24
22
|
typedef enum {
|
25
23
|
TRANSACTION_NONE,
|
26
24
|
TRANSACTION_REFS,
|
@@ -120,7 +118,7 @@ int git_transaction_lock_ref(git_transaction *tx, const char *refname)
|
|
120
118
|
if ((error = git_refdb_lock(&node->payload, tx->db, refname)) < 0)
|
121
119
|
return error;
|
122
120
|
|
123
|
-
git_strmap_insert(tx->locks, node->name, node, error);
|
121
|
+
git_strmap_insert(tx->locks, node->name, node, &error);
|
124
122
|
if (error < 0)
|
125
123
|
goto cleanup;
|
126
124
|
|
@@ -323,7 +321,6 @@ static int update_target(git_refdb *db, transaction_node *node)
|
|
323
321
|
int git_transaction_commit(git_transaction *tx)
|
324
322
|
{
|
325
323
|
transaction_node *node;
|
326
|
-
git_strmap_iter pos;
|
327
324
|
int error = 0;
|
328
325
|
|
329
326
|
assert(tx);
|
@@ -335,11 +332,7 @@ int git_transaction_commit(git_transaction *tx)
|
|
335
332
|
return error;
|
336
333
|
}
|
337
334
|
|
338
|
-
|
339
|
-
if (!git_strmap_has_data(tx->locks, pos))
|
340
|
-
continue;
|
341
|
-
|
342
|
-
node = git_strmap_value_at(tx->locks, pos);
|
335
|
+
git_strmap_foreach_value(tx->locks, node, {
|
343
336
|
if (node->reflog) {
|
344
337
|
if ((error = tx->db->backend->reflog_write(tx->db->backend, node->reflog)) < 0)
|
345
338
|
return error;
|
@@ -349,7 +342,7 @@ int git_transaction_commit(git_transaction *tx)
|
|
349
342
|
if ((error = update_target(tx->db, node)) < 0)
|
350
343
|
return error;
|
351
344
|
}
|
352
|
-
}
|
345
|
+
});
|
353
346
|
|
354
347
|
return 0;
|
355
348
|
}
|
@@ -358,7 +351,6 @@ void git_transaction_free(git_transaction *tx)
|
|
358
351
|
{
|
359
352
|
transaction_node *node;
|
360
353
|
git_pool pool;
|
361
|
-
git_strmap_iter pos;
|
362
354
|
|
363
355
|
assert(tx);
|
364
356
|
|
@@ -373,16 +365,12 @@ void git_transaction_free(git_transaction *tx)
|
|
373
365
|
}
|
374
366
|
|
375
367
|
/* start by unlocking the ones we've left hanging, if any */
|
376
|
-
|
377
|
-
if (!git_strmap_has_data(tx->locks, pos))
|
378
|
-
continue;
|
379
|
-
|
380
|
-
node = git_strmap_value_at(tx->locks, pos);
|
368
|
+
git_strmap_foreach_value(tx->locks, node, {
|
381
369
|
if (node->committed)
|
382
370
|
continue;
|
383
371
|
|
384
372
|
git_refdb_unlock(tx->db, node->payload, false, false, NULL, NULL, NULL);
|
385
|
-
}
|
373
|
+
});
|
386
374
|
|
387
375
|
git_refdb_free(tx->db);
|
388
376
|
git_strmap_free(tx->locks);
|
@@ -375,7 +375,8 @@ static int local_push(
|
|
375
375
|
goto on_error;
|
376
376
|
}
|
377
377
|
|
378
|
-
if ((error =
|
378
|
+
if ((error = git_repository_item_path(&odb_path, remote_repo, GIT_REPOSITORY_ITEM_OBJECTS)) < 0
|
379
|
+
|| (error = git_buf_joinpath(&odb_path, odb_path.ptr, "pack")) < 0)
|
379
380
|
goto on_error;
|
380
381
|
|
381
382
|
error = git_packbuilder_write(push->pb, odb_path.ptr, 0, transfer_to_push_transfer, (void *) cbs);
|