rugged 0.99.0 → 1.0.0
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/CMakeLists.txt +1 -0
- data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +4 -37
- data/vendor/libgit2/cmake/Modules/SanitizeBool.cmake +20 -0
- data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +3 -0
- data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +3 -0
- data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +3 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +2 -0
- data/vendor/libgit2/deps/ntlmclient/compat.h +22 -0
- data/vendor/libgit2/include/git2/deprecated.h +7 -0
- data/vendor/libgit2/include/git2/repository.h +5 -4
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +109 -2
- data/vendor/libgit2/include/git2/version.h +4 -4
- data/vendor/libgit2/src/CMakeLists.txt +11 -13
- data/vendor/libgit2/src/blame.c +1 -1
- data/vendor/libgit2/src/cache.c +8 -4
- data/vendor/libgit2/src/indexer.c +3 -3
- data/vendor/libgit2/src/notes.c +6 -3
- data/vendor/libgit2/src/odb_pack.c +0 -1
- data/vendor/libgit2/src/pack-objects.c +3 -1
- data/vendor/libgit2/src/pack.c +21 -1
- data/vendor/libgit2/src/push.c +3 -2
- data/vendor/libgit2/src/refdb_fs.c +3 -0
- data/vendor/libgit2/src/repository.c +63 -50
- data/vendor/libgit2/src/revwalk.c +1 -1
- data/vendor/libgit2/src/streams/openssl.c +1 -1
- data/vendor/libgit2/src/transports/auth_ntlm.c +2 -2
- data/vendor/libgit2/src/transports/httpclient.c +13 -2
- data/vendor/libgit2/src/unix/posix.h +1 -1
- data/vendor/libgit2/src/win32/path_w32.c +28 -1
- data/vendor/libgit2/src/win32/path_w32.h +16 -1
- data/vendor/libgit2/src/win32/posix_w32.c +1 -2
- data/vendor/libgit2/src/worktree.c +44 -28
- metadata +4 -6
- data/vendor/libgit2/src/sha1_lookup.c +0 -35
- data/vendor/libgit2/src/sha1_lookup.h +0 -19
@@ -29,7 +29,18 @@ static git_http_auth_scheme auth_schemes[] = {
|
|
29
29
|
{ GIT_HTTP_AUTH_BASIC, "Basic", GIT_CREDENTIAL_USERPASS_PLAINTEXT, git_http_auth_basic },
|
30
30
|
};
|
31
31
|
|
32
|
-
|
32
|
+
/*
|
33
|
+
* Use a 16kb read buffer to match the maximum size of a TLS packet. This
|
34
|
+
* is critical for compatibility with SecureTransport, which will always do
|
35
|
+
* a network read on every call, even if it has data buffered to return to
|
36
|
+
* you. That buffered data may be the _end_ of a keep-alive response, so
|
37
|
+
* if SecureTransport performs another network read, it will wait until the
|
38
|
+
* server ultimately times out before it returns that buffered data to you.
|
39
|
+
* Since SecureTransport only reads a single TLS packet at a time, by
|
40
|
+
* calling it with a read buffer that is the maximum size of a TLS packet,
|
41
|
+
* we ensure that it will never buffer.
|
42
|
+
*/
|
43
|
+
#define GIT_READ_BUFFER_SIZE (16 * 1024)
|
33
44
|
|
34
45
|
typedef struct {
|
35
46
|
git_net_url url;
|
@@ -585,7 +596,7 @@ static int apply_credentials(
|
|
585
596
|
if (auth->connection_affinity)
|
586
597
|
free_auth_context(server);
|
587
598
|
} else if (!token.size) {
|
588
|
-
git_error_set(GIT_ERROR_HTTP, "failed to respond to authentication
|
599
|
+
git_error_set(GIT_ERROR_HTTP, "failed to respond to authentication challenge");
|
589
600
|
error = -1;
|
590
601
|
goto done;
|
591
602
|
}
|
@@ -33,7 +33,7 @@ typedef int GIT_SOCKET;
|
|
33
33
|
# define st_atime_nsec st_atim.tv_nsec
|
34
34
|
# define st_mtime_nsec st_mtim.tv_nsec
|
35
35
|
# define st_ctime_nsec st_ctim.tv_nsec
|
36
|
-
#elif !defined(GIT_USE_STAT_MTIME_NSEC) && defined(
|
36
|
+
#elif !defined(GIT_USE_STAT_MTIME_NSEC) && defined(GIT_USE_NSEC)
|
37
37
|
# error GIT_USE_NSEC defined but unknown struct stat nanosecond type
|
38
38
|
#endif
|
39
39
|
|
@@ -25,6 +25,9 @@
|
|
25
25
|
#define path__is_unc(p) \
|
26
26
|
(((p)[0] == '\\' && (p)[1] == '\\') || ((p)[0] == '/' && (p)[1] == '/'))
|
27
27
|
|
28
|
+
#define path__startswith_slash(p) \
|
29
|
+
((p)[0] == '\\' || (p)[0] == '/')
|
30
|
+
|
28
31
|
GIT_INLINE(int) path__cwd(wchar_t *path, int size)
|
29
32
|
{
|
30
33
|
int len;
|
@@ -221,7 +224,7 @@ int git_win32_path_from_utf8(git_win32_path out, const char *src)
|
|
221
224
|
goto on_error;
|
222
225
|
}
|
223
226
|
/* Absolute paths omitting the drive letter */
|
224
|
-
else if (src
|
227
|
+
else if (path__startswith_slash(src)) {
|
225
228
|
if (path__cwd(dest, MAX_PATH) < 0)
|
226
229
|
goto on_error;
|
227
230
|
|
@@ -257,6 +260,30 @@ on_error:
|
|
257
260
|
return -1;
|
258
261
|
}
|
259
262
|
|
263
|
+
int git_win32_path_relative_from_utf8(git_win32_path out, const char *src)
|
264
|
+
{
|
265
|
+
wchar_t *dest = out, *p;
|
266
|
+
int len;
|
267
|
+
|
268
|
+
/* Handle absolute paths */
|
269
|
+
if (git_path_is_absolute(src) ||
|
270
|
+
path__is_nt_namespace(src) ||
|
271
|
+
path__is_unc(src) ||
|
272
|
+
path__startswith_slash(src)) {
|
273
|
+
return git_win32_path_from_utf8(out, src);
|
274
|
+
}
|
275
|
+
|
276
|
+
if ((len = git__utf8_to_16(dest, MAX_PATH, src)) < 0)
|
277
|
+
return -1;
|
278
|
+
|
279
|
+
for (p = dest; p < (dest + len); p++) {
|
280
|
+
if (*p == L'/')
|
281
|
+
*p = L'\\';
|
282
|
+
}
|
283
|
+
|
284
|
+
return len;
|
285
|
+
}
|
286
|
+
|
260
287
|
int git_win32_path_to_utf8(git_win32_utf8_path dest, const wchar_t *src)
|
261
288
|
{
|
262
289
|
char *out = dest;
|
@@ -11,7 +11,9 @@
|
|
11
11
|
#include "vector.h"
|
12
12
|
|
13
13
|
/**
|
14
|
-
* Create a Win32 path (in UCS-2 format) from a UTF-8 string.
|
14
|
+
* Create a Win32 path (in UCS-2 format) from a UTF-8 string. If the given
|
15
|
+
* path is relative, then it will be turned into an absolute path by having
|
16
|
+
* the current working directory prepended.
|
15
17
|
*
|
16
18
|
* @param dest The buffer to receive the wide string.
|
17
19
|
* @param src The UTF-8 string to convert.
|
@@ -19,6 +21,16 @@
|
|
19
21
|
*/
|
20
22
|
extern int git_win32_path_from_utf8(git_win32_path dest, const char *src);
|
21
23
|
|
24
|
+
/**
|
25
|
+
* Create a Win32 path (in UCS-2 format) from a UTF-8 string. If the given
|
26
|
+
* path is relative, then it will not be turned into an absolute path.
|
27
|
+
*
|
28
|
+
* @param dest The buffer to receive the wide string.
|
29
|
+
* @param src The UTF-8 string to convert.
|
30
|
+
* @return The length of the wide string, in characters (not counting the NULL terminator), or < 0 for failure
|
31
|
+
*/
|
32
|
+
extern int git_win32_path_relative_from_utf8(git_win32_path dest, const char *src);
|
33
|
+
|
22
34
|
/**
|
23
35
|
* Canonicalize a Win32 UCS-2 path so that it is suitable for delivery to the
|
24
36
|
* Win32 APIs: remove multiple directory separators, squashing to a single one,
|
@@ -26,6 +38,9 @@ extern int git_win32_path_from_utf8(git_win32_path dest, const char *src);
|
|
26
38
|
* canonical (always backslashes, never forward slashes) and process any
|
27
39
|
* directory entries of '.' or '..'.
|
28
40
|
*
|
41
|
+
* Note that this is intended to be used on absolute Windows paths, those
|
42
|
+
* that start with `C:\`, `\\server\share`, `\\?\`, etc.
|
43
|
+
*
|
29
44
|
* This processes the buffer in place.
|
30
45
|
*
|
31
46
|
* @param path The buffer to process
|
@@ -447,8 +447,7 @@ int p_symlink(const char *target, const char *path)
|
|
447
447
|
* relative symlinks, this is not someting we want.
|
448
448
|
*/
|
449
449
|
if (git_win32_path_from_utf8(path_w, path) < 0 ||
|
450
|
-
|
451
|
-
git_win32_path_canonicalize(target_w) < 0)
|
450
|
+
git_win32_path_relative_from_utf8(target_w, target) < 0)
|
452
451
|
return -1;
|
453
452
|
|
454
453
|
dwFlags = SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE;
|
@@ -136,11 +136,11 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char
|
|
136
136
|
goto out;
|
137
137
|
}
|
138
138
|
|
139
|
-
if ((wt->name = git__strdup(name)) == NULL
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
139
|
+
if ((wt->name = git__strdup(name)) == NULL ||
|
140
|
+
(wt->commondir_path = git_worktree__read_link(dir, "commondir")) == NULL ||
|
141
|
+
(wt->gitlink_path = git_worktree__read_link(dir, "gitdir")) == NULL ||
|
142
|
+
(parent && (wt->parent_path = git__strdup(parent)) == NULL) ||
|
143
|
+
(wt->worktree_path = git_path_dirname(wt->gitlink_path)) == NULL) {
|
144
144
|
error = -1;
|
145
145
|
goto out;
|
146
146
|
}
|
@@ -149,7 +149,10 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char
|
|
149
149
|
goto out;
|
150
150
|
wt->gitdir_path = git_buf_detach(&gitdir);
|
151
151
|
|
152
|
-
|
152
|
+
if ((error = git_worktree_is_locked(NULL, wt)) < 0)
|
153
|
+
goto out;
|
154
|
+
wt->locked = !!error;
|
155
|
+
error = 0;
|
153
156
|
|
154
157
|
*out = wt;
|
155
158
|
|
@@ -403,20 +406,24 @@ out:
|
|
403
406
|
int git_worktree_lock(git_worktree *wt, const char *reason)
|
404
407
|
{
|
405
408
|
git_buf buf = GIT_BUF_INIT, path = GIT_BUF_INIT;
|
406
|
-
int
|
409
|
+
int error;
|
407
410
|
|
408
411
|
assert(wt);
|
409
412
|
|
410
|
-
if ((
|
413
|
+
if ((error = git_worktree_is_locked(NULL, wt)) < 0)
|
414
|
+
goto out;
|
415
|
+
if (error) {
|
416
|
+
error = GIT_ELOCKED;
|
411
417
|
goto out;
|
418
|
+
}
|
412
419
|
|
413
|
-
if ((
|
420
|
+
if ((error = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0)
|
414
421
|
goto out;
|
415
422
|
|
416
423
|
if (reason)
|
417
424
|
git_buf_attach_notowned(&buf, reason, strlen(reason));
|
418
425
|
|
419
|
-
if ((
|
426
|
+
if ((error = git_futils_writebuffer(&buf, path.ptr, O_CREAT|O_EXCL|O_WRONLY, 0644)) < 0)
|
420
427
|
goto out;
|
421
428
|
|
422
429
|
wt->locked = 1;
|
@@ -424,16 +431,19 @@ int git_worktree_lock(git_worktree *wt, const char *reason)
|
|
424
431
|
out:
|
425
432
|
git_buf_dispose(&path);
|
426
433
|
|
427
|
-
return
|
434
|
+
return error;
|
428
435
|
}
|
429
436
|
|
430
437
|
int git_worktree_unlock(git_worktree *wt)
|
431
438
|
{
|
432
439
|
git_buf path = GIT_BUF_INIT;
|
440
|
+
int error;
|
433
441
|
|
434
442
|
assert(wt);
|
435
443
|
|
436
|
-
if (
|
444
|
+
if ((error = git_worktree_is_locked(NULL, wt)) < 0)
|
445
|
+
return error;
|
446
|
+
if (!error)
|
437
447
|
return 1;
|
438
448
|
|
439
449
|
if (git_buf_joinpath(&path, wt->gitdir_path, "locked") < 0)
|
@@ -454,22 +464,25 @@ int git_worktree_unlock(git_worktree *wt)
|
|
454
464
|
int git_worktree_is_locked(git_buf *reason, const git_worktree *wt)
|
455
465
|
{
|
456
466
|
git_buf path = GIT_BUF_INIT;
|
457
|
-
int
|
467
|
+
int error, locked;
|
458
468
|
|
459
469
|
assert(wt);
|
460
470
|
|
461
471
|
if (reason)
|
462
472
|
git_buf_clear(reason);
|
463
473
|
|
464
|
-
if ((
|
474
|
+
if ((error = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0)
|
475
|
+
goto out;
|
476
|
+
locked = git_path_exists(path.ptr);
|
477
|
+
if (locked && reason &&
|
478
|
+
(error = git_futils_readbuffer(reason, path.ptr)) < 0)
|
465
479
|
goto out;
|
466
|
-
if ((ret = git_path_exists(path.ptr)) && reason)
|
467
|
-
git_futils_readbuffer(reason, path.ptr);
|
468
480
|
|
481
|
+
error = locked;
|
469
482
|
out:
|
470
483
|
git_buf_dispose(&path);
|
471
484
|
|
472
|
-
return
|
485
|
+
return error;
|
473
486
|
}
|
474
487
|
|
475
488
|
const char *git_worktree_name(const git_worktree *wt)
|
@@ -502,7 +515,6 @@ int git_worktree_pruneinit_options(git_worktree_prune_options *opts,
|
|
502
515
|
int git_worktree_is_prunable(git_worktree *wt,
|
503
516
|
git_worktree_prune_options *opts)
|
504
517
|
{
|
505
|
-
git_buf reason = GIT_BUF_INIT;
|
506
518
|
git_worktree_prune_options popts = GIT_WORKTREE_PRUNE_OPTIONS_INIT;
|
507
519
|
|
508
520
|
GIT_ERROR_CHECK_VERSION(
|
@@ -512,20 +524,24 @@ int git_worktree_is_prunable(git_worktree *wt,
|
|
512
524
|
if (opts)
|
513
525
|
memcpy(&popts, opts, sizeof(popts));
|
514
526
|
|
515
|
-
if ((popts.flags & GIT_WORKTREE_PRUNE_LOCKED) == 0
|
516
|
-
|
517
|
-
|
518
|
-
if (!reason.size)
|
519
|
-
git_buf_attach_notowned(&reason, "no reason given", 15);
|
520
|
-
git_error_set(GIT_ERROR_WORKTREE, "not pruning locked working tree: '%s'", reason.ptr);
|
521
|
-
git_buf_dispose(&reason);
|
527
|
+
if ((popts.flags & GIT_WORKTREE_PRUNE_LOCKED) == 0) {
|
528
|
+
git_buf reason = GIT_BUF_INIT;
|
529
|
+
int error;
|
522
530
|
|
523
|
-
|
531
|
+
if ((error = git_worktree_is_locked(&reason, wt)) < 0)
|
532
|
+
return error;
|
533
|
+
|
534
|
+
if (error) {
|
535
|
+
if (!reason.size)
|
536
|
+
git_buf_attach_notowned(&reason, "no reason given", 15);
|
537
|
+
git_error_set(GIT_ERROR_WORKTREE, "not pruning locked working tree: '%s'", reason.ptr);
|
538
|
+
git_buf_dispose(&reason);
|
539
|
+
return 0;
|
540
|
+
}
|
524
541
|
}
|
525
542
|
|
526
543
|
if ((popts.flags & GIT_WORKTREE_PRUNE_VALID) == 0 &&
|
527
|
-
|
528
|
-
{
|
544
|
+
git_worktree_validate(wt) == 0) {
|
529
545
|
git_error_set(GIT_ERROR_WORKTREE, "not pruning valid working tree");
|
530
546
|
return 0;
|
531
547
|
}
|
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.
|
4
|
+
version: 1.0.0
|
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: 2020-03
|
12
|
+
date: 2020-04-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake-compiler
|
@@ -140,6 +140,7 @@ files:
|
|
140
140
|
- vendor/libgit2/cmake/Modules/FindmbedTLS.cmake
|
141
141
|
- vendor/libgit2/cmake/Modules/IdeSplitSources.cmake
|
142
142
|
- vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake
|
143
|
+
- vendor/libgit2/cmake/Modules/SanitizeBool.cmake
|
143
144
|
- vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake
|
144
145
|
- vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake
|
145
146
|
- vendor/libgit2/cmake/Modules/SelectHashes.cmake
|
@@ -526,8 +527,6 @@ files:
|
|
526
527
|
- vendor/libgit2/src/revwalk.c
|
527
528
|
- vendor/libgit2/src/revwalk.h
|
528
529
|
- vendor/libgit2/src/settings.c
|
529
|
-
- vendor/libgit2/src/sha1_lookup.c
|
530
|
-
- vendor/libgit2/src/sha1_lookup.h
|
531
530
|
- vendor/libgit2/src/signature.c
|
532
531
|
- vendor/libgit2/src/signature.h
|
533
532
|
- vendor/libgit2/src/sortedcache.c
|
@@ -675,8 +674,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
675
674
|
- !ruby/object:Gem::Version
|
676
675
|
version: '0'
|
677
676
|
requirements: []
|
678
|
-
|
679
|
-
rubygems_version: 2.7.6.2
|
677
|
+
rubygems_version: 3.1.2
|
680
678
|
signing_key:
|
681
679
|
specification_version: 4
|
682
680
|
summary: Rugged is a Ruby binding to the libgit2 linkable library
|
@@ -1,35 +0,0 @@
|
|
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 "sha1_lookup.h"
|
9
|
-
|
10
|
-
#include <stdio.h>
|
11
|
-
|
12
|
-
#include "oid.h"
|
13
|
-
|
14
|
-
int sha1_position(const void *table,
|
15
|
-
size_t stride,
|
16
|
-
unsigned lo, unsigned hi,
|
17
|
-
const unsigned char *key)
|
18
|
-
{
|
19
|
-
const unsigned char *base = table;
|
20
|
-
|
21
|
-
while (lo < hi) {
|
22
|
-
unsigned mi = (lo + hi) / 2;
|
23
|
-
int cmp = git_oid__hashcmp(base + mi * stride, key);
|
24
|
-
|
25
|
-
if (!cmp)
|
26
|
-
return mi;
|
27
|
-
|
28
|
-
if (cmp > 0)
|
29
|
-
hi = mi;
|
30
|
-
else
|
31
|
-
lo = mi+1;
|
32
|
-
}
|
33
|
-
|
34
|
-
return -((int)lo)-1;
|
35
|
-
}
|
@@ -1,19 +0,0 @@
|
|
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_sha1_lookup_h__
|
8
|
-
#define INCLUDE_sha1_lookup_h__
|
9
|
-
|
10
|
-
#include "common.h"
|
11
|
-
|
12
|
-
#include <stdlib.h>
|
13
|
-
|
14
|
-
int sha1_position(const void *table,
|
15
|
-
size_t stride,
|
16
|
-
unsigned lo, unsigned hi,
|
17
|
-
const unsigned char *key);
|
18
|
-
|
19
|
-
#endif
|