git 1.15.0 → 1.16.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/CONTRIBUTING.md +3 -3
- data/lib/git/base/factory.rb +1 -3
- data/lib/git/base.rb +4 -7
- data/lib/git/lib.rb +62 -12
- data/lib/git/remote.rb +15 -13
- data/lib/git/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06d2809c51685e3171199f0eb8bce4c02a7970d61d12fabbde7bf2ab3850a86b
|
4
|
+
data.tar.gz: 439eac61b04b8fcdafa739f7f6f27cfc89f00d557aac52aacd6f71762bc8281e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57db3b512e1d30130f1ab8bf9f77a701591c4c05c8c9fe35e9d047329cc7fe08b6e17c93d276bcfbfcb3e5c92a8dcb48cc571d513a7a981d69989eac7daea957
|
7
|
+
data.tar.gz: ee2b51658bda3767a01729888c60b677d79d69b75fadb8659a6d56144e82f51e21da817f7f310b1af0be9baedda37923315adac10ad7a65be1624b6ecb0628fb
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,20 @@
|
|
5
5
|
|
6
6
|
# Change Log
|
7
7
|
|
8
|
+
## v1.16.0 (2023-03-03)
|
9
|
+
|
10
|
+
[Full Changelog](https://github.com/ruby-git/ruby-git/compare/v1.15.0..v1.16.0)
|
11
|
+
|
12
|
+
Changes since v1.15.0:
|
13
|
+
|
14
|
+
* 536d Fix parsing when in detached HEAD state in Git::Lib#branches_all (#641)
|
15
|
+
* 5c68 Fix parsing of symbolic refs in `Git::Lib#branches_all` (#640)
|
16
|
+
* 7d88 Remote#branch and #merge should default to current branch instead of "master" (#639)
|
17
|
+
* 3dda0 `#branch` name should default to current branch instead of `master` (#638)
|
18
|
+
* d33d #checkout without args should do same as `git checkout` with no args (#637)
|
19
|
+
* 0c90 #push without args should do same as `git push` with no args (#636)
|
20
|
+
* 2b19 Make it easier to run test files from the command line (#635)
|
21
|
+
|
8
22
|
## v1.15.0 (2023-03-01)
|
9
23
|
|
10
24
|
[Full Changelog](https://github.com/ruby-git/ruby-git/compare/v1.14.0..v1.15.0)
|
data/CONTRIBUTING.md
CHANGED
@@ -84,11 +84,11 @@ In order to ensure high quality, all pull requests must meet these requirements:
|
|
84
84
|
While working on specific features you can run individual test files or
|
85
85
|
a group of tests using `bin/test`:
|
86
86
|
|
87
|
-
# run a single file:
|
88
|
-
$ bin/test
|
87
|
+
# run a single file (from tests/units):
|
88
|
+
$ bin/test test_object
|
89
89
|
|
90
90
|
# run multiple files:
|
91
|
-
$ bin/test
|
91
|
+
$ bin/test test_object test_archive
|
92
92
|
|
93
93
|
# run all unit tests:
|
94
94
|
$ bin/test
|
data/lib/git/base/factory.rb
CHANGED
@@ -3,9 +3,8 @@ module Git
|
|
3
3
|
class Base
|
4
4
|
|
5
5
|
module Factory
|
6
|
-
|
7
6
|
# @return [Git::Branch] an object for branch_name
|
8
|
-
def branch(branch_name =
|
7
|
+
def branch(branch_name = self.current_branch)
|
9
8
|
Git::Branch.new(self, branch_name)
|
10
9
|
end
|
11
10
|
|
@@ -93,7 +92,6 @@ module Git
|
|
93
92
|
shas = self.lib.merge_base(*args)
|
94
93
|
shas.map { |sha| gcommit(sha) }
|
95
94
|
end
|
96
|
-
|
97
95
|
end
|
98
96
|
|
99
97
|
end
|
data/lib/git/base.rb
CHANGED
@@ -350,8 +350,8 @@ module Git
|
|
350
350
|
end
|
351
351
|
|
352
352
|
# checks out a branch as the new git working directory
|
353
|
-
def checkout(
|
354
|
-
self.lib.checkout(
|
353
|
+
def checkout(*args, **options)
|
354
|
+
self.lib.checkout(*args, **options)
|
355
355
|
end
|
356
356
|
|
357
357
|
# checks out an old version of a file
|
@@ -374,11 +374,8 @@ module Git
|
|
374
374
|
#
|
375
375
|
# @git.config('remote.remote-name.push', 'refs/heads/master:refs/heads/master')
|
376
376
|
#
|
377
|
-
def push(
|
378
|
-
|
379
|
-
opts = {:tags => opts} if [true, false].include?(opts)
|
380
|
-
|
381
|
-
self.lib.push(remote, branch, opts)
|
377
|
+
def push(*args, **options)
|
378
|
+
self.lib.push(*args, **options)
|
382
379
|
end
|
383
380
|
|
384
381
|
# merges one or more branches into the current working branch
|
data/lib/git/lib.rb
CHANGED
@@ -347,13 +347,42 @@ module Git
|
|
347
347
|
command('symbolic-ref', 'HEAD', "refs/heads/#{branch_name}")
|
348
348
|
end
|
349
349
|
|
350
|
+
BRANCH_LINE_REGEXP = /
|
351
|
+
^
|
352
|
+
# Prefix indicates if this branch is checked out. The prefix is one of:
|
353
|
+
(?:
|
354
|
+
(?<current>\*[[:blank:]]) | # Current branch (checked out in the current worktree)
|
355
|
+
(?<worktree>\+[[:blank:]]) | # Branch checked out in a different worktree
|
356
|
+
[[:blank:]]{2} # Branch not checked out
|
357
|
+
)
|
358
|
+
|
359
|
+
# The branch's full refname
|
360
|
+
(?:
|
361
|
+
(?<not_a_branch>\(not[[:blank:]]a[[:blank:]]branch\)) |
|
362
|
+
(?:\(HEAD[[:blank:]]detached[[:blank:]]at[[:blank:]](?<detached_ref>[^\)]+)\)) |
|
363
|
+
(?<refname>[^[[:blank:]]]+)
|
364
|
+
)
|
365
|
+
|
366
|
+
# Optional symref
|
367
|
+
# If this ref is a symbolic reference, this is the ref referenced
|
368
|
+
(?:
|
369
|
+
[[:blank:]]->[[:blank:]](?<symref>.*)
|
370
|
+
)?
|
371
|
+
$
|
372
|
+
/x
|
373
|
+
|
350
374
|
def branches_all
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
375
|
+
command_lines('branch', '-a').map do |line|
|
376
|
+
match_data = line.match(BRANCH_LINE_REGEXP)
|
377
|
+
raise GitExecuteError, 'Unexpected branch line format' unless match_data
|
378
|
+
next nil if match_data[:not_a_branch] || match_data[:detached_ref]
|
379
|
+
[
|
380
|
+
match_data[:refname],
|
381
|
+
!match_data[:current].nil?,
|
382
|
+
!match_data[:worktree].nil?,
|
383
|
+
match_data[:symref]
|
384
|
+
]
|
385
|
+
end.compact
|
357
386
|
end
|
358
387
|
|
359
388
|
def worktrees_all
|
@@ -772,11 +801,16 @@ module Git
|
|
772
801
|
#
|
773
802
|
# @param [String] branch
|
774
803
|
# @param [Hash] opts
|
775
|
-
def checkout(branch, opts = {})
|
804
|
+
def checkout(branch = nil, opts = {})
|
805
|
+
if branch.is_a?(Hash) && opts == {}
|
806
|
+
opts = branch
|
807
|
+
branch = nil
|
808
|
+
end
|
809
|
+
|
776
810
|
arr_opts = []
|
777
811
|
arr_opts << '-b' if opts[:new_branch] || opts[:b]
|
778
812
|
arr_opts << '--force' if opts[:force] || opts[:f]
|
779
|
-
arr_opts << branch
|
813
|
+
arr_opts << branch if branch
|
780
814
|
arr_opts << opts[:start_point] if opts[:start_point] && arr_opts.include?('-b')
|
781
815
|
|
782
816
|
command('checkout', *arr_opts)
|
@@ -908,20 +942,36 @@ module Git
|
|
908
942
|
command('fetch', *arr_opts)
|
909
943
|
end
|
910
944
|
|
911
|
-
def push(remote, branch =
|
945
|
+
def push(remote = nil, branch = nil, opts = nil)
|
946
|
+
if opts.nil? && branch.instance_of?(Hash)
|
947
|
+
opts = branch
|
948
|
+
branch = nil
|
949
|
+
end
|
950
|
+
|
951
|
+
if opts.nil? && remote.instance_of?(Hash)
|
952
|
+
opts = remote
|
953
|
+
remote = nil
|
954
|
+
end
|
955
|
+
|
956
|
+
opts ||= {}
|
957
|
+
|
912
958
|
# Small hack to keep backwards compatibility with the 'push(remote, branch, tags)' method signature.
|
913
959
|
opts = {:tags => opts} if [true, false].include?(opts)
|
914
960
|
|
961
|
+
raise ArgumentError, "You must specify a remote if a branch is specified" if remote.nil? && !branch.nil?
|
962
|
+
|
915
963
|
arr_opts = []
|
916
964
|
arr_opts << '--mirror' if opts[:mirror]
|
917
965
|
arr_opts << '--delete' if opts[:delete]
|
918
966
|
arr_opts << '--force' if opts[:force] || opts[:f]
|
919
|
-
arr_opts << remote
|
967
|
+
arr_opts << remote if remote
|
968
|
+
arr_opts_with_branch = arr_opts.dup
|
969
|
+
arr_opts_with_branch << branch if branch
|
920
970
|
|
921
971
|
if opts[:mirror]
|
922
|
-
command('push', *
|
972
|
+
command('push', *arr_opts_with_branch)
|
923
973
|
else
|
924
|
-
command('push', *
|
974
|
+
command('push', *arr_opts_with_branch)
|
925
975
|
command('push', '--tags', *arr_opts) if opts[:tags]
|
926
976
|
end
|
927
977
|
end
|
data/lib/git/remote.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module Git
|
2
2
|
class Remote < Path
|
3
|
-
|
3
|
+
|
4
4
|
attr_accessor :name, :url, :fetch_opts
|
5
|
-
|
5
|
+
|
6
6
|
def initialize(base, name)
|
7
7
|
@base = base
|
8
8
|
config = @base.lib.config_remote(name)
|
@@ -10,27 +10,29 @@ module Git
|
|
10
10
|
@url = config['url']
|
11
11
|
@fetch_opts = config['fetch']
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
def fetch(opts={})
|
15
15
|
@base.fetch(@name, opts)
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
# merge this remote locally
|
19
|
-
def merge(branch =
|
20
|
-
|
19
|
+
def merge(branch = @base.current_branch)
|
20
|
+
remote_tracking_branch = "#{@name}/#{branch}"
|
21
|
+
@base.merge(remote_tracking_branch)
|
21
22
|
end
|
22
|
-
|
23
|
-
def branch(branch =
|
24
|
-
|
23
|
+
|
24
|
+
def branch(branch = @base.current_branch)
|
25
|
+
remote_tracking_branch = "#{@name}/#{branch}"
|
26
|
+
Git::Branch.new(@base, remote_tracking_branch)
|
25
27
|
end
|
26
|
-
|
28
|
+
|
27
29
|
def remove
|
28
|
-
@base.lib.remote_remove(@name)
|
30
|
+
@base.lib.remote_remove(@name)
|
29
31
|
end
|
30
|
-
|
32
|
+
|
31
33
|
def to_s
|
32
34
|
@name
|
33
35
|
end
|
34
|
-
|
36
|
+
|
35
37
|
end
|
36
38
|
end
|
data/lib/git/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Chacon and others
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
11
|
+
date: 2023-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|