git 1.14.0 → 1.15.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 +13 -0
- data/README.md +4 -0
- data/lib/git/base.rb +22 -3
- data/lib/git/branch.rb +6 -2
- data/lib/git/lib.rb +19 -13
- data/lib/git/log.rb +32 -36
- 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: 8a3877a2258c4835e6adc9ad9844f89eeaf340bf1ad7a47937178fc4abe4bfae
|
4
|
+
data.tar.gz: 4bc93c337d92610aa46c7265fb03cfff12ca62d23fcfe67488e5ffaf0dd171cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89caa1ce17512244548e72fcac709390c8017601e7699d6355939d613c8cba973c5309c733d4071d5db356d93f9fe37b42e3ca48862e759c00fdbf85b55eb51f
|
7
|
+
data.tar.gz: fff185e87d3925baed674a81b3501dba49a9e9c8af1e1f99fdb27645c83a5a22e820001ab46a49a71e703b0dcb741d5a6aa8baeddf2dd4c39fa6199443a8190e
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,19 @@
|
|
5
5
|
|
6
6
|
# Change Log
|
7
7
|
|
8
|
+
## v1.15.0 (2023-03-01)
|
9
|
+
|
10
|
+
[Full Changelog](https://github.com/ruby-git/ruby-git/compare/v1.14.0..v1.15.0)
|
11
|
+
|
12
|
+
Changes since v1.14.0:
|
13
|
+
|
14
|
+
* b40d #pull with no options should do the same thing as `git pull` with no options (#633)
|
15
|
+
* 9c5e Fix error when calling `Git::Lib#remove` with `recursive` or `cached` options (#632)
|
16
|
+
* 806e Add Git::Log#all option (#630)
|
17
|
+
* d905 Allow a repo to be opened giving a non-root repo directory (#629)
|
18
|
+
* 1ccd Rewrite worktree tests (#628)
|
19
|
+
* 4409 Fix Git::Branch#update_ref (#626)
|
20
|
+
|
8
21
|
## v1.14.0 (2023-02-25)
|
9
22
|
|
10
23
|
[Full Changelog](https://github.com/ruby-git/ruby-git/compare/v1.13.2..v1.14.0)
|
data/README.md
CHANGED
@@ -66,6 +66,10 @@ like:
|
|
66
66
|
|
67
67
|
`@git.log(20).object("some_file").since("2 weeks ago").between('v2.6', 'v2.7').each { |commit| [block] }`
|
68
68
|
|
69
|
+
Pass the `--all` option to `git log` as follows:
|
70
|
+
|
71
|
+
`@git.log.all.each { |commit| [block] }`
|
72
|
+
|
69
73
|
**Git::Worktrees** - Enumerable object that holds `Git::Worktree objects`.
|
70
74
|
|
71
75
|
## Examples
|
data/lib/git/base.rb
CHANGED
@@ -58,9 +58,26 @@ module Git
|
|
58
58
|
self.new(options)
|
59
59
|
end
|
60
60
|
|
61
|
+
def self.root_of_worktree(working_dir)
|
62
|
+
result = working_dir
|
63
|
+
status = nil
|
64
|
+
Dir.chdir(working_dir) do
|
65
|
+
git_cmd = "#{Git::Base.config.binary_path} -c core.quotePath=true -c color.ui=false rev-parse --show-toplevel 2>&1"
|
66
|
+
result = `#{git_cmd}`.chomp
|
67
|
+
status = $?
|
68
|
+
end
|
69
|
+
raise ArgumentError, "'#{working_dir}' is not in a git working tree" unless status.success?
|
70
|
+
result
|
71
|
+
end
|
72
|
+
|
61
73
|
# (see Git.open)
|
62
74
|
def self.open(working_dir, options = {})
|
75
|
+
raise ArgumentError, "'#{working_dir}' is not a directory" unless Dir.exist?(working_dir)
|
76
|
+
|
77
|
+
working_dir = root_of_worktree(working_dir) unless options[:repository]
|
78
|
+
|
63
79
|
normalize_paths(options, default_working_directory: working_dir)
|
80
|
+
|
64
81
|
self.new(options)
|
65
82
|
end
|
66
83
|
|
@@ -255,10 +272,12 @@ module Git
|
|
255
272
|
end
|
256
273
|
|
257
274
|
# removes file(s) from the git repository
|
258
|
-
def
|
259
|
-
self.lib.
|
275
|
+
def rm(path = '.', opts = {})
|
276
|
+
self.lib.rm(path, opts)
|
260
277
|
end
|
261
278
|
|
279
|
+
alias remove rm
|
280
|
+
|
262
281
|
# resets the working directory to the provided commitish
|
263
282
|
def reset(commitish = nil, opts = {})
|
264
283
|
self.lib.reset(commitish, opts)
|
@@ -380,7 +399,7 @@ module Git
|
|
380
399
|
# @git.pull('upstream') # pulls from upstream/master
|
381
400
|
# @git.pull('upstream', 'develope') # pulls from upstream/develop
|
382
401
|
#
|
383
|
-
def pull(remote=
|
402
|
+
def pull(remote = nil, branch = nil)
|
384
403
|
self.lib.pull(remote, branch)
|
385
404
|
end
|
386
405
|
|
data/lib/git/branch.rb
CHANGED
@@ -78,7 +78,11 @@ module Git
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def update_ref(commit)
|
81
|
-
@
|
81
|
+
if @remote
|
82
|
+
@base.lib.update_ref("refs/remotes/#{@remote.name}/#{@name}", commit)
|
83
|
+
else
|
84
|
+
@base.lib.update_ref("refs/heads/#{@name}", commit)
|
85
|
+
end
|
82
86
|
end
|
83
87
|
|
84
88
|
def to_a
|
@@ -114,7 +118,7 @@ module Git
|
|
114
118
|
# param [String] name branch full name.
|
115
119
|
# return [<Git::Remote,NilClass,String>] an Array containing the remote and branch names.
|
116
120
|
def parse_name(name)
|
117
|
-
if name.match(/^(?:remotes)
|
121
|
+
if name.match(/^(?:remotes\/)?([^\/]+)\/(.+)/)
|
118
122
|
return [Git::Remote.new(@base, $1), $2]
|
119
123
|
end
|
120
124
|
|
data/lib/git/lib.rb
CHANGED
@@ -628,16 +628,12 @@ module Git
|
|
628
628
|
command('add', *arr_opts)
|
629
629
|
end
|
630
630
|
|
631
|
-
def
|
631
|
+
def rm(path = '.', opts = {})
|
632
632
|
arr_opts = ['-f'] # overrides the up-to-date check by default
|
633
|
-
arr_opts <<
|
634
|
-
arr_opts <<
|
633
|
+
arr_opts << '-r' if opts[:recursive]
|
634
|
+
arr_opts << '--cached' if opts[:cached]
|
635
635
|
arr_opts << '--'
|
636
|
-
|
637
|
-
arr_opts += path
|
638
|
-
else
|
639
|
-
arr_opts << path
|
640
|
-
end
|
636
|
+
arr_opts += Array(path)
|
641
637
|
|
642
638
|
command('rm', *arr_opts)
|
643
639
|
end
|
@@ -930,8 +926,13 @@ module Git
|
|
930
926
|
end
|
931
927
|
end
|
932
928
|
|
933
|
-
def pull(remote=
|
934
|
-
|
929
|
+
def pull(remote = nil, branch = nil)
|
930
|
+
raise ArgumentError, "You must specify a remote if a branch is specified" if remote.nil? && !branch.nil?
|
931
|
+
|
932
|
+
arr_opts = []
|
933
|
+
arr_opts << remote if remote
|
934
|
+
arr_opts << branch if branch
|
935
|
+
command('pull', *arr_opts)
|
935
936
|
end
|
936
937
|
|
937
938
|
def tag_sha(tag_name)
|
@@ -974,8 +975,8 @@ module Git
|
|
974
975
|
command('commit-tree', *arr_opts, redirect: "< #{escape t.path}")
|
975
976
|
end
|
976
977
|
|
977
|
-
def update_ref(
|
978
|
-
command('update-ref',
|
978
|
+
def update_ref(ref, commit)
|
979
|
+
command('update-ref', ref, commit)
|
979
980
|
end
|
980
981
|
|
981
982
|
def checkout_index(opts = {})
|
@@ -1182,7 +1183,12 @@ module Git
|
|
1182
1183
|
def log_common_options(opts)
|
1183
1184
|
arr_opts = []
|
1184
1185
|
|
1185
|
-
|
1186
|
+
if opts[:count] && !opts[:count].is_a?(Integer)
|
1187
|
+
raise ArgumentError, "The log count option must be an Integer but was #{opts[:count].inspect}"
|
1188
|
+
end
|
1189
|
+
|
1190
|
+
arr_opts << "--max-count=#{opts[:count]}" if opts[:count]
|
1191
|
+
arr_opts << "--all" if opts[:all]
|
1186
1192
|
arr_opts << "--no-color"
|
1187
1193
|
arr_opts << "--cherry" if opts[:cherry]
|
1188
1194
|
arr_opts << "--since=#{opts[:since]}" if opts[:since].is_a? String
|
data/lib/git/log.rb
CHANGED
@@ -1,24 +1,19 @@
|
|
1
1
|
module Git
|
2
|
-
|
2
|
+
|
3
3
|
# object that holds the last X commits on given branch
|
4
4
|
class Log
|
5
5
|
include Enumerable
|
6
|
-
|
6
|
+
|
7
7
|
def initialize(base, count = 30)
|
8
8
|
dirty_log
|
9
9
|
@base = base
|
10
10
|
@count = count
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
@
|
16
|
-
|
17
|
-
@since = nil
|
18
|
-
@skip = nil
|
19
|
-
@until = nil
|
20
|
-
@between = nil
|
21
|
-
@cherry = nil
|
11
|
+
end
|
12
|
+
|
13
|
+
def all
|
14
|
+
dirty_log
|
15
|
+
@all = true
|
16
|
+
self
|
22
17
|
end
|
23
18
|
|
24
19
|
def object(objectish)
|
@@ -32,37 +27,37 @@ module Git
|
|
32
27
|
@author = regex
|
33
28
|
return self
|
34
29
|
end
|
35
|
-
|
30
|
+
|
36
31
|
def grep(regex)
|
37
32
|
dirty_log
|
38
33
|
@grep = regex
|
39
34
|
return self
|
40
35
|
end
|
41
|
-
|
36
|
+
|
42
37
|
def path(path)
|
43
38
|
dirty_log
|
44
39
|
@path = path
|
45
40
|
return self
|
46
41
|
end
|
47
|
-
|
42
|
+
|
48
43
|
def skip(num)
|
49
44
|
dirty_log
|
50
45
|
@skip = num
|
51
46
|
return self
|
52
47
|
end
|
53
|
-
|
48
|
+
|
54
49
|
def since(date)
|
55
50
|
dirty_log
|
56
51
|
@since = date
|
57
52
|
return self
|
58
53
|
end
|
59
|
-
|
54
|
+
|
60
55
|
def until(date)
|
61
56
|
dirty_log
|
62
57
|
@until = date
|
63
58
|
return self
|
64
59
|
end
|
65
|
-
|
60
|
+
|
66
61
|
def between(sha1, sha2 = nil)
|
67
62
|
dirty_log
|
68
63
|
@between = [sha1, sha2]
|
@@ -74,24 +69,24 @@ module Git
|
|
74
69
|
@cherry = true
|
75
70
|
return self
|
76
71
|
end
|
77
|
-
|
72
|
+
|
78
73
|
def to_s
|
79
74
|
self.map { |c| c.to_s }.join("\n")
|
80
75
|
end
|
81
|
-
|
76
|
+
|
82
77
|
|
83
78
|
# forces git log to run
|
84
|
-
|
79
|
+
|
85
80
|
def size
|
86
81
|
check_log
|
87
82
|
@commits.size rescue nil
|
88
83
|
end
|
89
|
-
|
84
|
+
|
90
85
|
def each(&block)
|
91
86
|
check_log
|
92
87
|
@commits.each(&block)
|
93
88
|
end
|
94
|
-
|
89
|
+
|
95
90
|
def first
|
96
91
|
check_log
|
97
92
|
@commits.first rescue nil
|
@@ -107,29 +102,30 @@ module Git
|
|
107
102
|
@commits[index] rescue nil
|
108
103
|
end
|
109
104
|
|
110
|
-
|
111
|
-
private
|
112
|
-
|
105
|
+
|
106
|
+
private
|
107
|
+
|
113
108
|
def dirty_log
|
114
109
|
@dirty_flag = true
|
115
110
|
end
|
116
|
-
|
111
|
+
|
117
112
|
def check_log
|
118
113
|
if @dirty_flag
|
119
114
|
run_log
|
120
115
|
@dirty_flag = false
|
121
116
|
end
|
122
117
|
end
|
123
|
-
|
118
|
+
|
124
119
|
# actually run the 'git log' command
|
125
|
-
def run_log
|
126
|
-
log = @base.lib.full_log_commits(
|
127
|
-
|
128
|
-
|
129
|
-
|
120
|
+
def run_log
|
121
|
+
log = @base.lib.full_log_commits(
|
122
|
+
count: @count, all: @all, object: @object, path_limiter: @path, since: @since,
|
123
|
+
author: @author, grep: @grep, skip: @skip, until: @until, between: @between,
|
124
|
+
cherry: @cherry
|
125
|
+
)
|
130
126
|
@commits = log.map { |c| Git::Object::Commit.new(@base, c['sha'], c) }
|
131
127
|
end
|
132
|
-
|
128
|
+
|
133
129
|
end
|
134
|
-
|
130
|
+
|
135
131
|
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.15.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-
|
11
|
+
date: 2023-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|