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
@@ -0,0 +1,35 @@
|
|
1
|
+
/***
|
2
|
+
* Copyright 2017 Marc Stevens <marc@marc-stevens.nl>, Dan Shumow <danshu@microsoft.com>
|
3
|
+
* Distributed under the MIT Software License.
|
4
|
+
* See accompanying file LICENSE.txt or copy at
|
5
|
+
* https://opensource.org/licenses/MIT
|
6
|
+
***/
|
7
|
+
|
8
|
+
// this file was generated by the 'parse_bitrel' program in the tools section
|
9
|
+
// using the data files from directory 'tools/data/3565'
|
10
|
+
//
|
11
|
+
// sha1_dvs contains a list of SHA-1 Disturbance Vectors (DV) to check
|
12
|
+
// dvType, dvK and dvB define the DV: I(K,B) or II(K,B) (see the paper)
|
13
|
+
// dm[80] is the expanded message block XOR-difference defined by the DV
|
14
|
+
// testt is the step to do the recompression from for collision detection
|
15
|
+
// maski and maskb define the bit to check for each DV in the dvmask returned by ubc_check
|
16
|
+
//
|
17
|
+
// ubc_check takes as input an expanded message block and verifies the unavoidable bitconditions for all listed DVs
|
18
|
+
// it returns a dvmask where each bit belonging to a DV is set if all unavoidable bitconditions for that DV have been met
|
19
|
+
// thus one needs to do the recompression check for each DV that has its bit set
|
20
|
+
|
21
|
+
#ifndef UBC_CHECK_H
|
22
|
+
#define UBC_CHECK_H
|
23
|
+
|
24
|
+
#include <stdint.h>
|
25
|
+
|
26
|
+
#define DVMASKSIZE 1
|
27
|
+
typedef struct { int dvType; int dvK; int dvB; int testt; int maski; int maskb; uint32_t dm[80]; } dv_info_t;
|
28
|
+
extern dv_info_t sha1_dvs[];
|
29
|
+
void ubc_check(const uint32_t W[80], uint32_t dvmask[DVMASKSIZE]);
|
30
|
+
|
31
|
+
#define DOSTORESTATE58
|
32
|
+
#define DOSTORESTATE65
|
33
|
+
|
34
|
+
|
35
|
+
#endif // UBC_CHECK_H
|
@@ -0,0 +1,133 @@
|
|
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 "idxmap.h"
|
9
|
+
|
10
|
+
/* This is __ac_X31_hash_string but with tolower and it takes the entry's stage into account */
|
11
|
+
static kh_inline khint_t idxentry_hash(const git_index_entry *e)
|
12
|
+
{
|
13
|
+
const char *s = e->path;
|
14
|
+
khint_t h = (khint_t)git__tolower(*s);
|
15
|
+
if (h) for (++s ; *s; ++s) h = (h << 5) - h + (khint_t)git__tolower(*s);
|
16
|
+
return h + GIT_IDXENTRY_STAGE(e);
|
17
|
+
}
|
18
|
+
|
19
|
+
#define idxentry_equal(a, b) (GIT_IDXENTRY_STAGE(a) == GIT_IDXENTRY_STAGE(b) && strcmp(a->path, b->path) == 0)
|
20
|
+
#define idxentry_icase_equal(a, b) (GIT_IDXENTRY_STAGE(a) == GIT_IDXENTRY_STAGE(b) && strcasecmp(a->path, b->path) == 0)
|
21
|
+
|
22
|
+
__KHASH_IMPL(idx, static kh_inline, const git_index_entry *, git_index_entry *, 1, idxentry_hash, idxentry_equal)
|
23
|
+
__KHASH_IMPL(idxicase, static kh_inline, const git_index_entry *, git_index_entry *, 1, idxentry_hash, idxentry_icase_equal)
|
24
|
+
|
25
|
+
int git_idxmap_alloc(git_idxmap **map)
|
26
|
+
{
|
27
|
+
if ((*map = kh_init(idx)) == NULL) {
|
28
|
+
giterr_set_oom();
|
29
|
+
return -1;
|
30
|
+
}
|
31
|
+
|
32
|
+
return 0;
|
33
|
+
}
|
34
|
+
|
35
|
+
int git_idxmap_icase_alloc(git_idxmap_icase **map)
|
36
|
+
{
|
37
|
+
if ((*map = kh_init(idxicase)) == NULL) {
|
38
|
+
giterr_set_oom();
|
39
|
+
return -1;
|
40
|
+
}
|
41
|
+
|
42
|
+
return 0;
|
43
|
+
}
|
44
|
+
|
45
|
+
void git_idxmap_insert(git_idxmap *map, const git_index_entry *key, void *value, int *rval)
|
46
|
+
{
|
47
|
+
khiter_t idx = kh_put(idx, map, key, rval);
|
48
|
+
|
49
|
+
if ((*rval) >= 0) {
|
50
|
+
if ((*rval) == 0)
|
51
|
+
kh_key(map, idx) = key;
|
52
|
+
kh_val(map, idx) = value;
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
void git_idxmap_icase_insert(git_idxmap_icase *map, const git_index_entry *key, void *value, int *rval)
|
57
|
+
{
|
58
|
+
khiter_t idx = kh_put(idxicase, map, key, rval);
|
59
|
+
|
60
|
+
if ((*rval) >= 0) {
|
61
|
+
if ((*rval) == 0)
|
62
|
+
kh_key(map, idx) = key;
|
63
|
+
kh_val(map, idx) = value;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
size_t git_idxmap_lookup_index(git_idxmap *map, const git_index_entry *key)
|
68
|
+
{
|
69
|
+
return kh_get(idx, map, key);
|
70
|
+
}
|
71
|
+
|
72
|
+
size_t git_idxmap_icase_lookup_index(git_idxmap_icase *map, const git_index_entry *key)
|
73
|
+
{
|
74
|
+
return kh_get(idxicase, map, key);
|
75
|
+
}
|
76
|
+
|
77
|
+
void *git_idxmap_value_at(git_idxmap *map, size_t idx)
|
78
|
+
{
|
79
|
+
return kh_val(map, idx);
|
80
|
+
}
|
81
|
+
|
82
|
+
int git_idxmap_valid_index(git_idxmap *map, size_t idx)
|
83
|
+
{
|
84
|
+
return idx != kh_end(map);
|
85
|
+
}
|
86
|
+
|
87
|
+
int git_idxmap_has_data(git_idxmap *map, size_t idx)
|
88
|
+
{
|
89
|
+
return kh_exist(map, idx);
|
90
|
+
}
|
91
|
+
|
92
|
+
void git_idxmap_resize(git_idxmap *map, size_t size)
|
93
|
+
{
|
94
|
+
kh_resize(idx, map, size);
|
95
|
+
}
|
96
|
+
|
97
|
+
void git_idxmap_icase_resize(git_idxmap_icase *map, size_t size)
|
98
|
+
{
|
99
|
+
kh_resize(idxicase, map, size);
|
100
|
+
}
|
101
|
+
|
102
|
+
void git_idxmap__free(git_idxmap *map)
|
103
|
+
{
|
104
|
+
kh_destroy(idx, map);
|
105
|
+
}
|
106
|
+
|
107
|
+
void git_idxmap_clear(git_idxmap *map)
|
108
|
+
{
|
109
|
+
kh_clear(idx, map);
|
110
|
+
}
|
111
|
+
|
112
|
+
void git_idxmap_delete_at(git_idxmap *map, size_t idx)
|
113
|
+
{
|
114
|
+
kh_del(idx, map, idx);
|
115
|
+
}
|
116
|
+
|
117
|
+
void git_idxmap_icase_delete_at(git_idxmap_icase *map, size_t idx)
|
118
|
+
{
|
119
|
+
kh_del(idxicase, map, idx);
|
120
|
+
}
|
121
|
+
|
122
|
+
void git_idxmap_delete(git_idxmap *map, const git_index_entry *key)
|
123
|
+
{
|
124
|
+
khiter_t idx = git_idxmap_lookup_index(map, key);
|
125
|
+
if (git_idxmap_valid_index(map, idx))
|
126
|
+
git_idxmap_delete_at(map, idx);
|
127
|
+
}
|
128
|
+
void git_idxmap_icase_delete(git_idxmap_icase *map, const git_index_entry *key)
|
129
|
+
{
|
130
|
+
khiter_t idx = git_idxmap_icase_lookup_index(map, key);
|
131
|
+
if (git_idxmap_valid_index((git_idxmap *)map, idx))
|
132
|
+
git_idxmap_icase_delete_at(map, idx);
|
133
|
+
}
|
data/vendor/libgit2/src/idxmap.h
CHANGED
@@ -26,66 +26,28 @@ typedef khash_t(idxicase) git_idxmap_icase;
|
|
26
26
|
|
27
27
|
typedef khiter_t git_idxmap_iter;
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
((*(hp) = kh_init(idxicase)) == NULL) ? giterr_set_oom(), -1 : 0
|
52
|
-
|
53
|
-
#define git_idxmap_insert(h, key, val, rval) do { \
|
54
|
-
khiter_t __pos = kh_put(idx, h, key, &rval); \
|
55
|
-
if (rval >= 0) { \
|
56
|
-
if (rval == 0) kh_key(h, __pos) = key; \
|
57
|
-
kh_val(h, __pos) = val; \
|
58
|
-
} } while (0)
|
59
|
-
|
60
|
-
#define git_idxmap_icase_insert(h, key, val, rval) do { \
|
61
|
-
khiter_t __pos = kh_put(idxicase, h, key, &rval); \
|
62
|
-
if (rval >= 0) { \
|
63
|
-
if (rval == 0) kh_key(h, __pos) = key; \
|
64
|
-
kh_val(h, __pos) = val; \
|
65
|
-
} } while (0)
|
66
|
-
|
67
|
-
#define git_idxmap_lookup_index(h, k) kh_get(idx, h, k)
|
68
|
-
#define git_idxmap_icase_lookup_index(h, k) kh_get(idxicase, h, k)
|
69
|
-
#define git_idxmap_value_at(h, idx) kh_val(h, idx)
|
70
|
-
#define git_idxmap_valid_index(h, idx) (idx != kh_end(h))
|
71
|
-
#define git_idxmap_has_data(h, idx) kh_exist(h, idx)
|
72
|
-
|
73
|
-
#define git_idxmap_resize(h,s) kh_resize(idx, h, s)
|
74
|
-
#define git_idxmap_free(h) kh_destroy(idx, h), h = NULL
|
75
|
-
#define git_idxmap_clear(h) kh_clear(idx, h)
|
76
|
-
|
77
|
-
#define git_idxmap_delete_at(h, id) kh_del(idx, h, id)
|
78
|
-
#define git_idxmap_icase_delete_at(h, id) kh_del(idxicase, h, id)
|
79
|
-
|
80
|
-
#define git_idxmap_delete(h, key) do { \
|
81
|
-
khiter_t __pos = git_idxmap_lookup_index(h, key); \
|
82
|
-
if (git_idxmap_valid_index(h, __pos)) \
|
83
|
-
git_idxmap_delete_at(h, __pos); } while (0)
|
84
|
-
|
85
|
-
#define git_idxmap_icase_delete(h, key) do { \
|
86
|
-
khiter_t __pos = git_idxmap_icase_lookup_index(h, key); \
|
87
|
-
if (git_idxmap_valid_index(h, __pos)) \
|
88
|
-
git_idxmap_icase_delete_at(h, __pos); } while (0)
|
29
|
+
int git_idxmap_alloc(git_idxmap **map);
|
30
|
+
int git_idxmap_icase_alloc(git_idxmap_icase **map);
|
31
|
+
void git_idxmap_insert(git_idxmap *map, const git_index_entry *key, void *value, int *rval);
|
32
|
+
void git_idxmap_icase_insert(git_idxmap_icase *map, const git_index_entry *key, void *value, int *rval);
|
33
|
+
|
34
|
+
size_t git_idxmap_lookup_index(git_idxmap *map, const git_index_entry *key);
|
35
|
+
size_t git_idxmap_icase_lookup_index(git_idxmap_icase *map, const git_index_entry *key);
|
36
|
+
void *git_idxmap_value_at(git_idxmap *map, size_t idx);
|
37
|
+
int git_idxmap_valid_index(git_idxmap *map, size_t idx);
|
38
|
+
int git_idxmap_has_data(git_idxmap *map, size_t idx);
|
39
|
+
|
40
|
+
void git_idxmap_resize(git_idxmap *map, size_t size);
|
41
|
+
void git_idxmap_icase_resize(git_idxmap_icase *map, size_t size);
|
42
|
+
#define git_idxmap_free(h) git_idxmap__free(h); (h) = NULL
|
43
|
+
void git_idxmap__free(git_idxmap *map);
|
44
|
+
void git_idxmap_clear(git_idxmap *map);
|
45
|
+
|
46
|
+
void git_idxmap_delete_at(git_idxmap *map, size_t idx);
|
47
|
+
void git_idxmap_icase_delete_at(git_idxmap_icase *map, size_t idx);
|
48
|
+
|
49
|
+
void git_idxmap_delete(git_idxmap *map, const git_index_entry *key);
|
50
|
+
void git_idxmap_icase_delete(git_idxmap_icase *map, const git_index_entry *key);
|
89
51
|
|
90
52
|
#define git_idxmap_begin kh_begin
|
91
53
|
#define git_idxmap_end kh_end
|
data/vendor/libgit2/src/ignore.c
CHANGED
@@ -277,6 +277,7 @@ int git_ignore__for_path(
|
|
277
277
|
{
|
278
278
|
int error = 0;
|
279
279
|
const char *workdir = git_repository_workdir(repo);
|
280
|
+
git_buf infopath = GIT_BUF_INIT;
|
280
281
|
|
281
282
|
assert(repo && ignores && path);
|
282
283
|
|
@@ -322,10 +323,14 @@ int git_ignore__for_path(
|
|
322
323
|
goto cleanup;
|
323
324
|
}
|
324
325
|
|
326
|
+
if ((error = git_repository_item_path(&infopath,
|
327
|
+
repo, GIT_REPOSITORY_ITEM_INFO)) < 0)
|
328
|
+
goto cleanup;
|
329
|
+
|
325
330
|
/* load .git/info/exclude */
|
326
331
|
error = push_ignore_file(
|
327
332
|
ignores, &ignores->ign_global,
|
328
|
-
|
333
|
+
infopath.ptr, GIT_IGNORE_FILE_INREPO);
|
329
334
|
if (error < 0)
|
330
335
|
goto cleanup;
|
331
336
|
|
@@ -336,6 +341,7 @@ int git_ignore__for_path(
|
|
336
341
|
git_repository_attr_cache(repo)->cfg_excl_file);
|
337
342
|
|
338
343
|
cleanup:
|
344
|
+
git_buf_free(&infopath);
|
339
345
|
if (error < 0)
|
340
346
|
git_ignore__free(ignores);
|
341
347
|
|
data/vendor/libgit2/src/ignore.h
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
#include "attr_file.h"
|
13
13
|
|
14
14
|
#define GIT_IGNORE_FILE ".gitignore"
|
15
|
-
#define GIT_IGNORE_FILE_INREPO "
|
15
|
+
#define GIT_IGNORE_FILE_INREPO "exclude"
|
16
16
|
#define GIT_IGNORE_FILE_XDG "ignore"
|
17
17
|
|
18
18
|
/* The git_ignores structure maintains three sets of ignores:
|
data/vendor/libgit2/src/index.c
CHANGED
@@ -27,9 +27,6 @@
|
|
27
27
|
#include "git2/config.h"
|
28
28
|
#include "git2/sys/index.h"
|
29
29
|
|
30
|
-
GIT__USE_IDXMAP
|
31
|
-
GIT__USE_IDXMAP_ICASE
|
32
|
-
|
33
30
|
#define INSERT_IN_MAP_EX(idx, map, e, err) do { \
|
34
31
|
if ((idx)->ignore_case) \
|
35
32
|
git_idxmap_icase_insert((khash_t(idxicase) *) (map), (e), (e), (err)); \
|
@@ -1365,7 +1362,7 @@ static int index_insert(
|
|
1365
1362
|
error = git_vector_insert_sorted(&index->entries, entry, index_no_dups);
|
1366
1363
|
|
1367
1364
|
if (error == 0) {
|
1368
|
-
INSERT_IN_MAP(index, entry, error);
|
1365
|
+
INSERT_IN_MAP(index, entry, &error);
|
1369
1366
|
}
|
1370
1367
|
}
|
1371
1368
|
|
@@ -1592,7 +1589,7 @@ int git_index__fill(git_index *index, const git_vector *source_entries)
|
|
1592
1589
|
if ((ret = git_vector_insert(&index->entries, entry)) < 0)
|
1593
1590
|
break;
|
1594
1591
|
|
1595
|
-
INSERT_IN_MAP(index, entry, ret);
|
1592
|
+
INSERT_IN_MAP(index, entry, &ret);
|
1596
1593
|
if (ret < 0)
|
1597
1594
|
break;
|
1598
1595
|
}
|
@@ -2479,9 +2476,9 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
|
|
2479
2476
|
assert(!index->entries.length);
|
2480
2477
|
|
2481
2478
|
if (index->ignore_case)
|
2482
|
-
|
2479
|
+
git_idxmap_icase_resize((khash_t(idxicase) *) index->entries_map, header.entry_count);
|
2483
2480
|
else
|
2484
|
-
|
2481
|
+
git_idxmap_resize(index->entries_map, header.entry_count);
|
2485
2482
|
|
2486
2483
|
/* Parse all the entries */
|
2487
2484
|
for (i = 0; i < header.entry_count && buffer_size > INDEX_FOOTER_SIZE; ++i) {
|
@@ -2499,7 +2496,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
|
|
2499
2496
|
goto done;
|
2500
2497
|
}
|
2501
2498
|
|
2502
|
-
INSERT_IN_MAP(index, entry, error);
|
2499
|
+
INSERT_IN_MAP(index, entry, &error);
|
2503
2500
|
|
2504
2501
|
if (error < 0) {
|
2505
2502
|
index_entry_free(entry);
|
@@ -2979,12 +2976,12 @@ int git_index_read_tree(git_index *index, const git_tree *tree)
|
|
2979
2976
|
goto cleanup;
|
2980
2977
|
|
2981
2978
|
if (index->ignore_case)
|
2982
|
-
|
2979
|
+
git_idxmap_icase_resize((khash_t(idxicase) *) entries_map, entries.length);
|
2983
2980
|
else
|
2984
|
-
|
2981
|
+
git_idxmap_resize(entries_map, entries.length);
|
2985
2982
|
|
2986
2983
|
git_vector_foreach(&entries, i, e) {
|
2987
|
-
INSERT_IN_MAP_EX(index, entries_map, e, error);
|
2984
|
+
INSERT_IN_MAP_EX(index, entries_map, e, &error);
|
2988
2985
|
|
2989
2986
|
if (error < 0) {
|
2990
2987
|
giterr_set(GITERR_INDEX, "failed to insert entry into map");
|
@@ -3037,9 +3034,9 @@ static int git_index_read_iterator(
|
|
3037
3034
|
goto done;
|
3038
3035
|
|
3039
3036
|
if (index->ignore_case && new_length_hint)
|
3040
|
-
|
3037
|
+
git_idxmap_icase_resize((khash_t(idxicase) *) new_entries_map, new_length_hint);
|
3041
3038
|
else if (new_length_hint)
|
3042
|
-
|
3039
|
+
git_idxmap_resize(new_entries_map, new_length_hint);
|
3043
3040
|
|
3044
3041
|
opts.flags = GIT_ITERATOR_DONT_IGNORE_CASE |
|
3045
3042
|
GIT_ITERATOR_INCLUDE_CONFLICTS;
|
@@ -3103,7 +3100,7 @@ static int git_index_read_iterator(
|
|
3103
3100
|
|
3104
3101
|
if (add_entry) {
|
3105
3102
|
if ((error = git_vector_insert(&new_entries, add_entry)) == 0)
|
3106
|
-
INSERT_IN_MAP_EX(index, new_entries_map, add_entry, error);
|
3103
|
+
INSERT_IN_MAP_EX(index, new_entries_map, add_entry, &error);
|
3107
3104
|
}
|
3108
3105
|
|
3109
3106
|
if (remove_entry && error >= 0)
|
@@ -18,8 +18,6 @@
|
|
18
18
|
#include "oidmap.h"
|
19
19
|
#include "zstream.h"
|
20
20
|
|
21
|
-
GIT__USE_OIDMAP
|
22
|
-
|
23
21
|
extern git_mutex git__mwindow_mutex;
|
24
22
|
|
25
23
|
#define UINT31_MAX (0x7FFFFFFF)
|
@@ -294,7 +292,7 @@ static int store_object(git_indexer *idx)
|
|
294
292
|
git_oid_cpy(&pentry->sha1, &oid);
|
295
293
|
pentry->offset = entry_start;
|
296
294
|
|
297
|
-
k =
|
295
|
+
k = git_oidmap_put(idx->pack->idx_cache, &pentry->sha1, &error);
|
298
296
|
if (error == -1) {
|
299
297
|
git__free(pentry);
|
300
298
|
giterr_set_oom();
|
@@ -308,7 +306,7 @@ static int store_object(git_indexer *idx)
|
|
308
306
|
}
|
309
307
|
|
310
308
|
|
311
|
-
|
309
|
+
git_oidmap_set_value_at(idx->pack->idx_cache, k, pentry);
|
312
310
|
|
313
311
|
git_oid_cpy(&entry->oid, &oid);
|
314
312
|
|
@@ -333,9 +331,7 @@ on_error:
|
|
333
331
|
|
334
332
|
GIT_INLINE(bool) has_entry(git_indexer *idx, git_oid *id)
|
335
333
|
{
|
336
|
-
|
337
|
-
k = kh_get(oid, idx->pack->idx_cache, id);
|
338
|
-
return (k != kh_end(idx->pack->idx_cache));
|
334
|
+
return git_oidmap_exists(idx->pack->idx_cache, id);
|
339
335
|
}
|
340
336
|
|
341
337
|
static int save_entry(git_indexer *idx, struct entry *entry, struct git_pack_entry *pentry, git_off_t entry_start)
|
@@ -351,14 +347,14 @@ static int save_entry(git_indexer *idx, struct entry *entry, struct git_pack_ent
|
|
351
347
|
}
|
352
348
|
|
353
349
|
pentry->offset = entry_start;
|
354
|
-
k =
|
350
|
+
k = git_oidmap_put(idx->pack->idx_cache, &pentry->sha1, &error);
|
355
351
|
|
356
352
|
if (error <= 0) {
|
357
353
|
giterr_set(GITERR_INDEXER, "cannot insert object into pack");
|
358
354
|
return -1;
|
359
355
|
}
|
360
356
|
|
361
|
-
|
357
|
+
git_oidmap_set_value_at(idx->pack->idx_cache, k, pentry);
|
362
358
|
|
363
359
|
/* Add the object to the list */
|
364
360
|
if (git_vector_insert(&idx->objects, entry) < 0)
|
@@ -1106,8 +1102,9 @@ void git_indexer_free(git_indexer *idx)
|
|
1106
1102
|
|
1107
1103
|
if (idx->pack->idx_cache) {
|
1108
1104
|
struct git_pack_entry *pentry;
|
1109
|
-
|
1110
|
-
|
1105
|
+
git_oidmap_foreach_value(idx->pack->idx_cache, pentry, {
|
1106
|
+
git__free(pentry);
|
1107
|
+
});
|
1111
1108
|
|
1112
1109
|
git_oidmap_free(idx->pack->idx_cache);
|
1113
1110
|
}
|
data/vendor/libgit2/src/merge.c
CHANGED
@@ -562,7 +562,7 @@ int git_repository_mergehead_foreach(
|
|
562
562
|
|
563
563
|
assert(repo && cb);
|
564
564
|
|
565
|
-
if ((error = git_buf_joinpath(&merge_head_path, repo->
|
565
|
+
if ((error = git_buf_joinpath(&merge_head_path, repo->gitdir,
|
566
566
|
GIT_MERGE_HEAD_FILE)) < 0)
|
567
567
|
return error;
|
568
568
|
|
@@ -2277,7 +2277,7 @@ static int write_merge_head(
|
|
2277
2277
|
|
2278
2278
|
assert(repo && heads);
|
2279
2279
|
|
2280
|
-
if ((error = git_buf_joinpath(&file_path, repo->
|
2280
|
+
if ((error = git_buf_joinpath(&file_path, repo->gitdir, GIT_MERGE_HEAD_FILE)) < 0 ||
|
2281
2281
|
(error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_FORCE, GIT_MERGE_FILE_MODE)) < 0)
|
2282
2282
|
goto cleanup;
|
2283
2283
|
|
@@ -2305,7 +2305,7 @@ static int write_merge_mode(git_repository *repo)
|
|
2305
2305
|
|
2306
2306
|
assert(repo);
|
2307
2307
|
|
2308
|
-
if ((error = git_buf_joinpath(&file_path, repo->
|
2308
|
+
if ((error = git_buf_joinpath(&file_path, repo->gitdir, GIT_MERGE_MODE_FILE)) < 0 ||
|
2309
2309
|
(error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_FORCE, GIT_MERGE_FILE_MODE)) < 0)
|
2310
2310
|
goto cleanup;
|
2311
2311
|
|
@@ -2536,7 +2536,7 @@ static int write_merge_msg(
|
|
2536
2536
|
for (i = 0; i < heads_len; i++)
|
2537
2537
|
entries[i].merge_head = heads[i];
|
2538
2538
|
|
2539
|
-
if ((error = git_buf_joinpath(&file_path, repo->
|
2539
|
+
if ((error = git_buf_joinpath(&file_path, repo->gitdir, GIT_MERGE_MSG_FILE)) < 0 ||
|
2540
2540
|
(error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_FORCE, GIT_MERGE_FILE_MODE)) < 0 ||
|
2541
2541
|
(error = git_filebuf_write(&file, "Merge ", 6)) < 0)
|
2542
2542
|
goto cleanup;
|
@@ -2914,7 +2914,7 @@ int git_merge__append_conflicts_to_merge_msg(
|
|
2914
2914
|
if (!git_index_has_conflicts(index))
|
2915
2915
|
return 0;
|
2916
2916
|
|
2917
|
-
if ((error = git_buf_joinpath(&file_path, repo->
|
2917
|
+
if ((error = git_buf_joinpath(&file_path, repo->gitdir, GIT_MERGE_MSG_FILE)) < 0 ||
|
2918
2918
|
(error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_APPEND, GIT_MERGE_FILE_MODE)) < 0)
|
2919
2919
|
goto cleanup;
|
2920
2920
|
|