git 1.17.1 → 1.17.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c893cd566fdfc36e3f6ea4fc742d7665b5daf14c299ff1acd19c40de49e3eb2
4
- data.tar.gz: cc08038a56beb1ba3195600e80a666d66a7d58dd1abb16d4e5282718cd067bcd
3
+ metadata.gz: cebf2eab3cc2c8cc605b1e3b9aeafa2f2c82ef0a50be725fc211fdb55a7980c0
4
+ data.tar.gz: 9df1a5d2f067aa183a65cea1cd21e7260b72213f92c50b60bda26f261b2e7d23
5
5
  SHA512:
6
- metadata.gz: 82e6441de9ff798080bddc79ca411386a7c20b5d4208d584fa12925777bb66de1ddc3532d512087eb815c083184d30cf445ef097a47cc8a8089027b1498820c1
7
- data.tar.gz: f0657f1ee3f3142612fdd904bc8649207e6bc1a115cbb3a969105c99a0fff15c0d1851b755c527351f06b462e6ff22b98e85ed4139acdcdcf949c434417becb2
6
+ metadata.gz: 57019fb39b7476d7ee5d97fd1c21f1bffa3b1fbd59413e5bb602794c106f38c2bc528c1a86b98b89bc835976671ea836a1bdf911aa9a281b81b97d221c12b80d
7
+ data.tar.gz: d2f2927fbdf6b13b66d931183d6effb5fbb651e10c77a393e6b035ccc88e5b6ffd60dbed859fa6c400cd4551df253be89074e20aaa0f40379b609e79bd3553fa
data/CHANGELOG.md CHANGED
@@ -5,6 +5,14 @@
5
5
 
6
6
  # Change Log
7
7
 
8
+ ## v1.17.2 (2023-03-07)
9
+
10
+ [Full Changelog](https://github.com/ruby-git/ruby-git/compare/v1.17.1..v1.17.2)
11
+
12
+ Changes since v1.17.1:
13
+
14
+ * f43d6 Fix branch name parsing to handle names that include slashes (#651)
15
+
8
16
  ## v1.17.1 (2023-03-06)
9
17
 
10
18
  [Full Changelog](https://github.com/ruby-git/ruby-git/compare/v1.17.0..v1.17.1)
data/lib/git/branch.rb CHANGED
@@ -1,11 +1,9 @@
1
1
  require 'git/path'
2
2
 
3
3
  module Git
4
-
5
4
  class Branch < Path
6
-
7
5
  attr_accessor :full, :remote, :name
8
-
6
+
9
7
  def initialize(base, name)
10
8
  @full = name
11
9
  @base = base
@@ -13,25 +11,25 @@ module Git
13
11
  @stashes = nil
14
12
  @remote, @name = parse_name(name)
15
13
  end
16
-
14
+
17
15
  def gcommit
18
16
  @gcommit ||= @base.gcommit(@full)
19
17
  @gcommit
20
18
  end
21
-
19
+
22
20
  def stashes
23
21
  @stashes ||= Git::Stashes.new(@base)
24
22
  end
25
-
23
+
26
24
  def checkout
27
25
  check_if_create
28
26
  @base.checkout(@full)
29
27
  end
30
-
28
+
31
29
  def archive(file, opts = {})
32
30
  @base.lib.archive(@full, file, opts)
33
31
  end
34
-
32
+
35
33
  # g.branch('new_branch').in_branch do
36
34
  # # create new file
37
35
  # # do other stuff
@@ -47,26 +45,26 @@ module Git
47
45
  end
48
46
  @base.checkout(old_current)
49
47
  end
50
-
48
+
51
49
  def create
52
50
  check_if_create
53
51
  end
54
-
52
+
55
53
  def delete
56
54
  @base.lib.branch_delete(@name)
57
55
  end
58
-
56
+
59
57
  def current
60
58
  determine_current
61
59
  end
62
-
60
+
63
61
  def contains?(commit)
64
62
  !@base.lib.branch_contains(commit, self.name).empty?
65
63
  end
66
-
64
+
67
65
  def merge(branch = nil, message = nil)
68
66
  if branch
69
- in_branch do
67
+ in_branch do
70
68
  @base.merge(branch, message)
71
69
  false
72
70
  end
@@ -76,7 +74,7 @@ module Git
76
74
  @base.merge(@name)
77
75
  end
78
76
  end
79
-
77
+
80
78
  def update_ref(commit)
81
79
  if @remote
82
80
  @base.lib.update_ref("refs/remotes/#{@remote.name}/#{@name}", commit)
@@ -84,47 +82,62 @@ module Git
84
82
  @base.lib.update_ref("refs/heads/#{@name}", commit)
85
83
  end
86
84
  end
87
-
85
+
88
86
  def to_a
89
87
  [@full]
90
88
  end
91
-
89
+
92
90
  def to_s
93
91
  @full
94
92
  end
95
-
96
- private
97
93
 
98
- def check_if_create
99
- @base.lib.branch_new(@name) rescue nil
100
- end
101
-
102
- def determine_current
103
- @base.lib.branch_current == @name
104
- end
105
-
106
- # Given a full branch name return an Array containing the remote and branch names.
107
- #
108
- # Removes 'remotes' from the beggining of the name (if present).
109
- # Takes the second part (splittign by '/') as the remote name.
110
- # Takes the rest as the repo name (can also hold one or more '/').
111
- #
112
- # Example:
113
- # parse_name('master') #=> [nil, 'master']
114
- # parse_name('origin/master') #=> ['origin', 'master']
115
- # parse_name('remotes/origin/master') #=> ['origin', 'master']
116
- # parse_name('origin/master/v2') #=> ['origin', 'master/v2']
117
- #
118
- # param [String] name branch full name.
119
- # return [<Git::Remote,NilClass,String>] an Array containing the remote and branch names.
120
- def parse_name(name)
121
- if name.match(/^(?:remotes\/)?([^\/]+)\/(.+)/)
122
- return [Git::Remote.new(@base, $1), $2]
123
- end
94
+ private
124
95
 
125
- return [nil, name]
126
- end
127
-
96
+ def check_if_create
97
+ @base.lib.branch_new(@name) rescue nil
98
+ end
99
+
100
+ def determine_current
101
+ @base.lib.branch_current == @name
102
+ end
103
+
104
+ BRANCH_NAME_REGEXP = %r{
105
+ ^
106
+ # Optional 'refs/remotes/' at the beggining to specify a remote tracking branch
107
+ # with a <remote_name>. <remote_name> is nil if not present.
108
+ (?:
109
+ (?:(?:refs/)?remotes/)(?<remote_name>[^/]+)/
110
+ )?
111
+ (?<branch_name>.*)
112
+ $
113
+ }x
114
+
115
+ # Given a full branch name return an Array containing the remote and branch names.
116
+ #
117
+ # Removes 'remotes' from the beggining of the name (if present).
118
+ # Takes the second part (splittign by '/') as the remote name.
119
+ # Takes the rest as the repo name (can also hold one or more '/').
120
+ #
121
+ # Example:
122
+ # # local branches
123
+ # parse_name('master') #=> [nil, 'master']
124
+ # parse_name('origin/master') #=> [nil, 'origin/master']
125
+ # parse_name('origin/master/v2') #=> [nil, 'origin/master']
126
+ #
127
+ # # remote branches
128
+ # parse_name('remotes/origin/master') #=> ['origin', 'master']
129
+ # parse_name('remotes/origin/master/v2') #=> ['origin', 'master/v2']
130
+ # parse_name('refs/remotes/origin/master') #=> ['origin', 'master']
131
+ # parse_name('refs/remotes/origin/master/v2') #=> ['origin', 'master/v2']
132
+ #
133
+ # param [String] name branch full name.
134
+ # return [<Git::Remote,NilClass,String>] an Array containing the remote and branch names.
135
+ def parse_name(name)
136
+ # Expect this will always match
137
+ match = name.match(BRANCH_NAME_REGEXP)
138
+ remote = match[:remote_name] ? Git::Remote.new(@base, match[:remote_name]) : nil
139
+ branch_name = match[:branch_name]
140
+ [ remote, branch_name ]
141
+ end
128
142
  end
129
-
130
143
  end
data/lib/git/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Git
2
2
  # The current gem version
3
3
  # @return [String] the current gem version.
4
- VERSION='1.17.1'
4
+ VERSION='1.17.2'
5
5
  end
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.17.1
4
+ version: 1.17.2
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-06 00:00:00.000000000 Z
11
+ date: 2023-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable