rugged 0.21.3 → 0.21.4
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/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/include/git2/sys/refs.h +11 -0
- data/vendor/libgit2/include/git2/version.h +2 -2
- data/vendor/libgit2/src/attr_file.c +26 -0
- data/vendor/libgit2/src/attr_file.h +2 -0
- data/vendor/libgit2/src/global.c +7 -0
- data/vendor/libgit2/src/ignore.c +86 -3
- data/vendor/libgit2/src/indexer.c +5 -0
- data/vendor/libgit2/src/path.h +1 -0
- data/vendor/libgit2/src/transports/smart_protocol.c +3 -1
- data/vendor/libgit2/src/unix/map.c +2 -4
- data/vendor/libgit2/src/win32/path_w32.h +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f476d2b5aaa786237a1a2e6c02ad6817395753a
|
4
|
+
data.tar.gz: bf560fd348d673a1ecf2082347cdcab68bc85141
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a47343b080593b0e668fdb259baafb7cd6f0a26dd7813476bafa83e60ded6e9218c417f4591b266825369ad8b600e3bd0e4016f2efa1c536501f39c64160256f
|
7
|
+
data.tar.gz: eec3ac2c4f8d77755e44c8f6d5e4358dbfa650905b6d6dfa8ecc2b404ffc466b4f1d34cfa8ea6879f9081a13d4a21cbf49c87ebb1826c2377c7a5094a3758d85
|
data/lib/rugged/version.rb
CHANGED
@@ -11,6 +11,15 @@
|
|
11
11
|
#include "git2/types.h"
|
12
12
|
#include "git2/oid.h"
|
13
13
|
|
14
|
+
/**
|
15
|
+
* @file git2/sys/refs.h
|
16
|
+
* @brief Low-level Git ref creation
|
17
|
+
* @defgroup git_backend Git custom backend APIs
|
18
|
+
* @ingroup Git
|
19
|
+
* @{
|
20
|
+
*/
|
21
|
+
GIT_BEGIN_DECL
|
22
|
+
|
14
23
|
/**
|
15
24
|
* Create a new direct reference from an OID.
|
16
25
|
*
|
@@ -35,4 +44,6 @@ GIT_EXTERN(git_reference *) git_reference__alloc_symbolic(
|
|
35
44
|
const char *name,
|
36
45
|
const char *target);
|
37
46
|
|
47
|
+
/** @} */
|
48
|
+
GIT_END_DECL
|
38
49
|
#endif
|
@@ -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.21.
|
10
|
+
#define LIBGIT2_VERSION "0.21.4"
|
11
11
|
#define LIBGIT2_VER_MAJOR 0
|
12
12
|
#define LIBGIT2_VER_MINOR 21
|
13
|
-
#define LIBGIT2_VER_REVISION
|
13
|
+
#define LIBGIT2_VER_REVISION 4
|
14
14
|
|
15
15
|
#define LIBGIT2_SOVERSION 21
|
16
16
|
|
@@ -347,6 +347,21 @@ bool git_attr_fnmatch__match(
|
|
347
347
|
const char *filename;
|
348
348
|
int flags = 0;
|
349
349
|
|
350
|
+
/*
|
351
|
+
* If the rule was generated in a subdirectory, we must only
|
352
|
+
* use it for paths inside that directory. We can thus return
|
353
|
+
* a non-match if the prefixes don't match.
|
354
|
+
*/
|
355
|
+
if (match->containing_dir) {
|
356
|
+
if (match->flags & GIT_ATTR_FNMATCH_ICASE) {
|
357
|
+
if (git__strncasecmp(path->path, match->containing_dir, match->containing_dir_length))
|
358
|
+
return 0;
|
359
|
+
} else {
|
360
|
+
if (git__prefixcmp(path->path, match->containing_dir))
|
361
|
+
return 0;
|
362
|
+
}
|
363
|
+
}
|
364
|
+
|
350
365
|
if (match->flags & GIT_ATTR_FNMATCH_ICASE)
|
351
366
|
flags |= FNM_CASEFOLD;
|
352
367
|
if (match->flags & GIT_ATTR_FNMATCH_LEADINGDIR)
|
@@ -566,6 +581,17 @@ int git_attr_fnmatch__parse(
|
|
566
581
|
/* leave FULLPATH match on, however */
|
567
582
|
}
|
568
583
|
|
584
|
+
if (context) {
|
585
|
+
char *slash = strchr(context, '/');
|
586
|
+
size_t len;
|
587
|
+
if (slash) {
|
588
|
+
/* include the slash for easier matching */
|
589
|
+
len = slash - context + 1;
|
590
|
+
spec->containing_dir = git_pool_strndup(pool, context, len);
|
591
|
+
spec->containing_dir_length = len;
|
592
|
+
}
|
593
|
+
}
|
594
|
+
|
569
595
|
if ((spec->flags & GIT_ATTR_FNMATCH_FULLPATH) != 0 &&
|
570
596
|
context != NULL && git_path_root(pattern) < 0)
|
571
597
|
{
|
data/vendor/libgit2/src/global.c
CHANGED
@@ -64,6 +64,13 @@ void openssl_locking_function(int mode, int n, const char *file, int line)
|
|
64
64
|
|
65
65
|
static void shutdown_ssl(void)
|
66
66
|
{
|
67
|
+
int num_locks, i;
|
68
|
+
|
69
|
+
num_locks = CRYPTO_num_locks();
|
70
|
+
CRYPTO_set_locking_callback(NULL);
|
71
|
+
|
72
|
+
for (i = 0; i < num_locks; ++i)
|
73
|
+
git_mutex_free(openssl_locks);
|
67
74
|
git__free(openssl_locks);
|
68
75
|
}
|
69
76
|
#endif
|
data/vendor/libgit2/src/ignore.c
CHANGED
@@ -4,11 +4,87 @@
|
|
4
4
|
#include "attrcache.h"
|
5
5
|
#include "path.h"
|
6
6
|
#include "config.h"
|
7
|
+
#include "fnmatch.h"
|
7
8
|
|
8
9
|
#define GIT_IGNORE_INTERNAL "[internal]exclude"
|
9
10
|
|
10
11
|
#define GIT_IGNORE_DEFAULT_RULES ".\n..\n.git\n"
|
11
12
|
|
13
|
+
/**
|
14
|
+
* A negative ignore can only unignore a file which is given explicitly before, thus
|
15
|
+
*
|
16
|
+
* foo
|
17
|
+
* !foo/bar
|
18
|
+
*
|
19
|
+
* does not unignore 'foo/bar' as it's not in the list. However
|
20
|
+
*
|
21
|
+
* foo/<star>
|
22
|
+
* !foo/bar
|
23
|
+
*
|
24
|
+
* does unignore 'foo/bar', as it is contained within the 'foo/<star>' rule.
|
25
|
+
*/
|
26
|
+
static int does_negate_rule(int *out, git_vector *rules, git_attr_fnmatch *match)
|
27
|
+
{
|
28
|
+
int error = 0;
|
29
|
+
size_t i;
|
30
|
+
git_attr_fnmatch *rule;
|
31
|
+
char *path;
|
32
|
+
git_buf buf = GIT_BUF_INIT;
|
33
|
+
|
34
|
+
/* path of the file relative to the workdir, so we match the rules in subdirs */
|
35
|
+
if (match->containing_dir) {
|
36
|
+
git_buf_puts(&buf, match->containing_dir);
|
37
|
+
}
|
38
|
+
if (git_buf_puts(&buf, match->pattern) < 0)
|
39
|
+
return -1;
|
40
|
+
|
41
|
+
path = git_buf_detach(&buf);
|
42
|
+
|
43
|
+
git_vector_foreach(rules, i, rule) {
|
44
|
+
/* no chance of matching w/o a wilcard */
|
45
|
+
if (!(rule->flags & GIT_ATTR_FNMATCH_HASWILD))
|
46
|
+
continue;
|
47
|
+
|
48
|
+
/*
|
49
|
+
* If we're dealing with a directory (which we know via the
|
50
|
+
* strchr() check) we want to use 'dirname/<star>' as the
|
51
|
+
* pattern so p_fnmatch() honours FNM_PATHNAME
|
52
|
+
*/
|
53
|
+
git_buf_clear(&buf);
|
54
|
+
if (rule->containing_dir) {
|
55
|
+
git_buf_puts(&buf, rule->containing_dir);
|
56
|
+
}
|
57
|
+
if (!strchr(rule->pattern, '*'))
|
58
|
+
error = git_buf_printf(&buf, "%s/*", rule->pattern);
|
59
|
+
else
|
60
|
+
error = git_buf_puts(&buf, rule->pattern);
|
61
|
+
|
62
|
+
if (error < 0)
|
63
|
+
goto out;
|
64
|
+
|
65
|
+
|
66
|
+
if ((error = p_fnmatch(git_buf_cstr(&buf), path, FNM_PATHNAME)) < 0) {
|
67
|
+
giterr_set(GITERR_INVALID, "error matching pattern");
|
68
|
+
goto out;
|
69
|
+
}
|
70
|
+
|
71
|
+
/* if we found a match, we want to keep this rule */
|
72
|
+
if (error != FNM_NOMATCH) {
|
73
|
+
*out = 1;
|
74
|
+
error = 0;
|
75
|
+
goto out;
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
*out = 0;
|
80
|
+
error = 0;
|
81
|
+
|
82
|
+
out:
|
83
|
+
git__free(path);
|
84
|
+
git_buf_free(&buf);
|
85
|
+
return error;
|
86
|
+
}
|
87
|
+
|
12
88
|
static int parse_ignore_file(
|
13
89
|
git_repository *repo, git_attr_file *attrs, const char *data)
|
14
90
|
{
|
@@ -32,6 +108,8 @@ static int parse_ignore_file(
|
|
32
108
|
}
|
33
109
|
|
34
110
|
while (!error && *scan) {
|
111
|
+
int valid_rule = 1;
|
112
|
+
|
35
113
|
if (!match && !(match = git__calloc(1, sizeof(*match)))) {
|
36
114
|
error = -1;
|
37
115
|
break;
|
@@ -48,11 +126,16 @@ static int parse_ignore_file(
|
|
48
126
|
match->flags |= GIT_ATTR_FNMATCH_ICASE;
|
49
127
|
|
50
128
|
scan = git__next_line(scan);
|
51
|
-
|
129
|
+
|
130
|
+
/* if a negative match doesn't actually do anything, throw it away */
|
131
|
+
if (match->flags & GIT_ATTR_FNMATCH_NEGATIVE)
|
132
|
+
error = does_negate_rule(&valid_rule, &attrs->rules, match);
|
133
|
+
|
134
|
+
if (!error && valid_rule)
|
135
|
+
error = git_vector_insert(&attrs->rules, match);
|
52
136
|
}
|
53
137
|
|
54
|
-
if (error != 0) {
|
55
|
-
git__free(match->pattern);
|
138
|
+
if (error != 0 || !valid_rule) {
|
56
139
|
match->pattern = NULL;
|
57
140
|
|
58
141
|
if (error == GIT_ENOTFOUND)
|
@@ -433,6 +433,8 @@ static int write_at(git_indexer *idx, const void *data, git_off_t offset, size_t
|
|
433
433
|
git_map map;
|
434
434
|
int error;
|
435
435
|
|
436
|
+
assert(data && size);
|
437
|
+
|
436
438
|
/* the offset needs to be at the beginning of the a page boundary */
|
437
439
|
page_start = (offset / page_size) * page_size;
|
438
440
|
page_offset = offset - page_start;
|
@@ -451,6 +453,9 @@ static int append_to_pack(git_indexer *idx, const void *data, size_t size)
|
|
451
453
|
{
|
452
454
|
git_off_t current_size = idx->pack->mwf.size;
|
453
455
|
|
456
|
+
if (!size)
|
457
|
+
return 0;
|
458
|
+
|
454
459
|
/* add the extra space we need at the end */
|
455
460
|
if (p_ftruncate(idx->pack->mwf.fd, current_size + size) < 0) {
|
456
461
|
giterr_set(GITERR_OS, "Failed to increase size of pack file '%s'", idx->pack->pack_name);
|
data/vendor/libgit2/src/path.h
CHANGED
@@ -592,7 +592,9 @@ int git_smart__download_pack(
|
|
592
592
|
}
|
593
593
|
} else if (pkt->type == GIT_PKT_DATA) {
|
594
594
|
git_pkt_data *p = (git_pkt_data *) pkt;
|
595
|
-
|
595
|
+
|
596
|
+
if (p->len)
|
597
|
+
error = writepack->append(writepack, p->data, p->len, stats);
|
596
598
|
} else if (pkt->type == GIT_PKT_FLUSH) {
|
597
599
|
/* A flush indicates the end of the packfile */
|
598
600
|
git__free(pkt);
|
@@ -20,7 +20,7 @@ long git__page_size(void)
|
|
20
20
|
|
21
21
|
int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, git_off_t offset)
|
22
22
|
{
|
23
|
-
int mprot =
|
23
|
+
int mprot = PROT_READ;
|
24
24
|
int mflag = 0;
|
25
25
|
|
26
26
|
GIT_MMAP_VALIDATE(out, len, prot, flags);
|
@@ -29,9 +29,7 @@ int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, git_off_t offs
|
|
29
29
|
out->len = 0;
|
30
30
|
|
31
31
|
if (prot & GIT_PROT_WRITE)
|
32
|
-
mprot
|
33
|
-
else if (prot & GIT_PROT_READ)
|
34
|
-
mprot = PROT_READ;
|
32
|
+
mprot |= PROT_WRITE;
|
35
33
|
|
36
34
|
if ((flags & GIT_MAP_TYPE) == GIT_MAP_SHARED)
|
37
35
|
mflag = MAP_SHARED;
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rugged
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.21.
|
4
|
+
version: 0.21.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Chacon
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-01-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake-compiler
|