git 1.15.0 → 1.16.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/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
|