git-maintain 0.2.2.pre.25.gb2af5c1 → 0.2.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: 3d1ec5d7fc571c7dde83904b709a9bed65d9313232900e47e84258ba034315ca
4
- data.tar.gz: 3beefd08e2a0c8666ccc3a91fad973475cbbc284bd54d4ad309b16e1e2a7cec0
3
+ metadata.gz: bde61f3ac980a295c32bbb076a99176d6d93cd82972d7ce8da69954958bfc056
4
+ data.tar.gz: 266b8df2a5de8795850c70a9b89dbac008d613ac688ee4e3cfd41c4a90895d01
5
5
  SHA512:
6
- metadata.gz: 630b64de94f82732aa71a98002781bb23750d0a132dc59a5a00c1ef64dd5de3c07521319fa47bb9cf96e3b86dac4c7703a1be1e07e6553f9d20e6c2be46b6ab4
7
- data.tar.gz: 3a0d3b47a05becc6c1f07bae3c411612e08d185baa4b41ddf312d94dc84781780e0f18bd18d80192cfcf3e0f692f57ee7ee908dda3b591fcaaab5f59ab859db2
6
+ metadata.gz: f62502f4308c146bbb87411e3fdb9c397b38f23b5c8e206e836b971e518d0670173af4682d17f4fd96bdac2aa02875c63fb9cf8ae093782bc114712d6cc2f764
7
+ data.tar.gz: 63e7f063e94f6586dbb5d2c1d747ba16851b58a17c7c095e132e520c8a56b439ac9a857731a0e6d3c22c8c0fe8db472f830fa3ea09df9cb569a07e293c5a6bf3
data/CHANGELOG CHANGED
@@ -1,16 +1,7 @@
1
1
  ------------------
2
- 0.3.0 (2018-10-09)
2
+ 0.2.3
3
3
  ------------------
4
4
 
5
- * Fix support for commit messages containing double quotes
6
- * Fix --base-version and --branch-suffix
7
- * Add completion support for --version
8
- * Fix --no-travis
9
- * Customizable behaviour for travis/emails in Addons
10
- * Allow branch action to be run on user-specified branches (instead of the stable pattern)
11
- * Add hpc-testing addon
12
- * Add git-maintain addon
13
-
14
5
  ------------------
15
6
  0.2.2 (2018-07-13)
16
7
  ------------------
data/README.md CHANGED
@@ -27,11 +27,9 @@ The idea is to script most of the maintenance tasks so the maintainer can focus
27
27
  - Load git-maintain-completion.sh for shell completion
28
28
 
29
29
  ## Remote setup
30
- - the 'github' remote should be your own WIP github to test out branches before submitting to the official repo.
31
- Also know as the 'Validation' repo. It can be switched to another remote by setting maintain.valid-repo=xxx in your gitconfig
30
+ - the 'github' remote should be your own WIP github to test out branches before submitting to the official repo
32
31
  - the 'origin' remote should be the official repo in read-only mode to avoid any accidental pushes
33
32
  - the 'stable' remote should be the official repo in RW mode
34
- Also know as the 'Stable' repo. It can be switched to another remote by setting maintain.stable-repo=xxx in your gitconfig
35
33
 
36
34
  ## Stealing commits
37
35
 
@@ -22,10 +22,6 @@ _complete_git_maintain_branch(){
22
22
  BRANCHES=
23
23
  __gitcomp_nl "$(git maintain list_branches)"
24
24
  ;;
25
- -V|--version)
26
- # Extra arg expected but not completable
27
- __gitcomp_nl ""
28
- ;;
29
25
  esac
30
26
  }
31
27
 
@@ -92,9 +88,6 @@ _git_maintain(){
92
88
  case "$prev" in
93
89
  *)
94
90
  __gitcomp_nl "$OPT_LIST"
95
- # Override default completion with specific branch completion (if it matches)
96
- _complete_git_maintain_branch
97
-
98
91
  esac
99
92
  fi
100
93
  fi
data/lib/branch.rb CHANGED
@@ -52,10 +52,6 @@ module GitMaintain
52
52
  optsParser.on("-V", "--version [regexp]", Regexp, "Regexp to filter versions.") {
53
53
  |val| opts[:version] = val}
54
54
 
55
- if action != :merge
56
- optsParser.on("-B", "--manual-branch <branch name>", "Work on a specific (non-stable) branch.") {
57
- |val| opts[:manual_branch] = val}
58
- end
59
55
  case action
60
56
  when :cp
61
57
  optsParser.banner += "-c <sha1> [-c <sha1> ...]"
@@ -72,7 +68,7 @@ module GitMaintain
72
68
  when :push_stable
73
69
  optsParser.banner += "[-T]"
74
70
  optsParser.on("-T", "--no-travis", "Ignore Travis build status and push anyway.") {
75
- |val| opts[:no_travis] = true}
71
+ |val| opts[:no_travis] = val}
76
72
  end
77
73
  end
78
74
 
@@ -93,26 +89,19 @@ module GitMaintain
93
89
  repo.stableUpdate()
94
90
  end
95
91
 
96
- branchList=[]
97
- if opts[:manual_branch] == nil then
98
- branchList = repo.getStableList(opts[:br_suff]).map(){|br|
99
- branch = Branch::load(repo, br, travis, opts[:br_suff])
100
- case branch.is_targetted?(opts)
101
- when :too_old
102
- puts "# Skipping older v#{branch.version}"
103
- next
104
- when :no_match
105
- puts "# Skipping v#{branch.version} not matching #{opts[:version].to_s()}"
106
- next
107
- end
108
- branch
109
- }.compact()
110
- else
111
- branchList = [ Branch::load(repo, opts[:manual_branch], travis, opts[:br_suff]) ]
112
- end
113
- branchList.each(){|branch|
92
+ repo.getStableList(opts[:br_suff]).each(){|br|
93
+ branch = Branch::load(repo, br, travis, opts[:br_suff])
94
+ case branch.is_targetted?(opts)
95
+ when :too_old
96
+ puts "# Skipping older v#{branch.version}"
97
+ next
98
+ when :no_match
99
+ puts "# Skipping v#{branch.version} not matching #{opts[:version].to_s()}"
100
+ next
101
+ end
102
+
114
103
  puts "###############################"
115
- puts "# Working on #{branch.verbose_name}"
104
+ puts "# Working on v#{branch.version}"
116
105
  puts "###############################"
117
106
 
118
107
  if NO_CHECKOUT_ACTIONS.index(action) == nil then
@@ -126,31 +115,21 @@ module GitMaintain
126
115
  GitMaintain::checkDirectConstructor(self.class)
127
116
 
128
117
  @repo = repo
129
- @travis = travis
130
118
  @version = version
119
+ @travis = travis
131
120
  @branch_suff = branch_suff
132
121
 
133
- if version =~ /^[0-9]+$/
134
- @local_branch = "dev/stable-v#{@version}/#{@branch_suff}"
135
- @remote_branch ="stable-v#{@version}"
136
- @branch_type = :std
137
- @verbose_name = "v"+version
138
- else
139
- @remote_branch = @local_branch = version
140
- @branch_type = :user_specified
141
- @verbose_name = version
142
- end
143
-
122
+ @local_branch = "dev/stable-v#{@version}/#{@branch_suff}"
144
123
  @head = @repo.runGit("rev-parse #{@local_branch}")
145
- @remote_ref = "#{@repo.stable_repo}/#{@remote_branch}"
124
+
125
+ @remote_branch ="stable-v#{@version}"
126
+ @remote_ref = "#{Repo::STABLE_REPO}/#{@remote_branch}"
146
127
  @stable_head = @repo.runGit("rev-parse #{@remote_ref}")
147
128
  @stable_base = @repo.findStableBase(@local_branch)
148
-
149
129
  end
150
- attr_reader :version, :local_branch, :head, :remote_branch, :remote_ref, :stable_head, :verbose_name
130
+ attr_reader :version, :local_branch, :head, :remote_branch, :remote_ref, :stable_head
151
131
 
152
132
  def is_targetted?(opts)
153
- return true if @branch_type == :user_specified
154
133
  if @version.to_i < opts[:base_ver] then
155
134
  return :too_old
156
135
  end
@@ -209,7 +188,7 @@ module GitMaintain
209
188
 
210
189
  # Push the branch to the validation repo
211
190
  def push(opts)
212
- @repo.runGit("push #{opts[:push_force] == true ? "-f" : ""} #{@repo.valid_repo} #{@local_branch}")
191
+ @repo.runGit("push #{opts[:push_force] == true ? "-f" : ""} #{Repo::VALID_REPO} #{@local_branch}")
213
192
  end
214
193
 
215
194
  # Monitor the build status on Travis
@@ -237,14 +216,14 @@ module GitMaintain
237
216
 
238
217
  # Push branch to the stable repo
239
218
  def push_stable(opts)
240
- if (opts[:no_travis] != true && @NO_TRAVIS != true) &&
219
+ if opts[:no_travis] != true &&
241
220
  @travis.checkValidState(@head) != true then
242
221
  puts "Build is not passed on travis. Skipping push to stable"
243
222
  return
244
223
  end
245
224
  rep = GitMaintain::checkLog(opts, @local_branch, @remote_ref, "submit")
246
225
  if rep == "y" then
247
- @repo.runGit("push #{@repo.stable_repo} #{@local_branch}:#{@remote_branch}")
226
+ @repo.runGit("push #{Repo::STABLE_REPO} #{@local_branch}:#{@remote_branch}")
248
227
  else
249
228
  puts "Skipping push to stable"
250
229
  return
@@ -425,7 +404,6 @@ module GitMaintain
425
404
 
426
405
  def steal_one(opts, commit)
427
406
  subj=@repo.runGit("log -1 --format=\"%s\" #{commit}")
428
- subj.gsub!(/"/, '\"')
429
407
  msg=''
430
408
 
431
409
  # Let's grab the mainline commit id, this is useful if the version tag
data/lib/repo.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  module GitMaintain
2
2
  class Repo
3
- @@VALID_REPO = "github"
4
- @@STABLE_REPO = "stable"
5
- @@SUBMIT_BINARY="git-release"
3
+ VALID_REPO = "github"
4
+ STABLE_REPO = "stable"
5
+ SUBMIT_BINARY="git-release"
6
6
 
7
7
  ACTION_LIST = [
8
8
  :list_branches,
@@ -47,16 +47,10 @@ module GitMaintain
47
47
  if path == nil
48
48
  @path = Dir.pwd()
49
49
  end
50
-
51
- @valid_repo = runGit("config maintain.valid-repo 2> /dev/null").chomp()
52
- @valid_repo = @@VALID_REPO if @valid_repo == ""
53
- @stable_repo = runGit("config maintain.stable-repo 2>/dev/null").chomp()
54
- @stable_repo = @@STABLE_REPO if @stable_repo == ""
55
-
56
- @remote_valid=runGit("remote -v | egrep '^#{@valid_repo}' | grep fetch |
57
- awk '{ print $2}' | sed -e 's/.*://' -e 's/\\.git//'")
58
- @remote_stable=runGit("remote -v | egrep '^#{@stable_repo}' | grep fetch |
59
- awk '{ print $2}' | sed -e 's/.*://' -e 's/\\.git//'")
50
+ @remote_valid=runGit("remote -v | egrep '^#{VALID_REPO}' | grep fetch |
51
+ awk '{ print $2}' | sed -e 's/.*://' -e 's/\.git//'")
52
+ @remote_stable=runGit("remote -v | egrep '^#{STABLE_REPO}' | grep fetch |
53
+ awk '{ print $2}' | sed -e 's/.*://' -e 's/\.git//'")
60
54
  @stable_base_patterns=
61
55
  runGit("config --get-regexp stable-base | egrep '^stable-base\.' | "+
62
56
  "sed -e 's/stable-base\.//' -e 's/---/\\//g'").split("\n").inject({}){ |m, x|
@@ -65,7 +59,7 @@ module GitMaintain
65
59
  m
66
60
  }
67
61
  end
68
- attr_reader :path, :remote_valid, :remote_stable, :valid_repo, :stable_repo
62
+ attr_reader :path, :remote_valid, :remote_stable
69
63
 
70
64
  def run(cmd)
71
65
  return `cd #{@path} && #{cmd}`
@@ -92,7 +86,7 @@ module GitMaintain
92
86
 
93
87
  def stableUpdate()
94
88
  puts "# Fetching stable updates..."
95
- runGit("fetch #{@stable_repo}")
89
+ runGit("fetch #{STABLE_REPO}")
96
90
  end
97
91
  def getStableList(br_suff)
98
92
  return @stable_list if @stable_list != nil
@@ -116,8 +110,8 @@ module GitMaintain
116
110
  return @suffix_list
117
111
  end
118
112
 
119
- def submitReleases(opts)
120
- remote_tags=runGit("ls-remote --tags #{@stable_repo} |
113
+ def submitReleases()
114
+ remote_tags=runGit("ls-remote --tags #{STABLE_REPO} |
121
115
  egrep 'refs/tags/v[0-9.]*$'").split("\n").map(){
122
116
  |x| x.gsub(/.*refs\/tags\//, '')
123
117
  }
@@ -130,49 +124,47 @@ module GitMaintain
130
124
  end
131
125
 
132
126
  puts "This will officially release these tags: #{new_tags.join(", ")}"
133
- rep = GitMaintain::confirm(opts, "release them")
127
+ rep = GitMaintain::confirm("release them")
134
128
  if rep != 'y' then
135
129
  raise "Aborting.."
136
130
  end
137
131
 
138
- if @NOTIFY_RELEASE != false
139
- mail_path=`mktemp`.chomp()
140
- mail = File.open(mail_path, "w+")
141
- mail.puts "From " + runGit("rev-parse HEAD") + " " + `date`.chomp()
142
- mail.puts "From: " + runGit("config user.name") +
143
- " <" + runGit("config user.email") +">"
144
- mail.puts "To: " + runGit("config patch.target")
145
- mail.puts "Date: " + `date -R`.chomp()
146
- mail.puts "Subject: [ANNOUNCE] " + File.basename(@path) + " " +
147
- (new_tags.length > 1 ?
148
- (new_tags[0 .. -2].join(", ") + " and " + new_tags[-1]) :
149
- new_tags.join(" ")) +
150
- " has been tagged/released"
151
- mail.puts ""
152
- mail.puts "Here's the information from the tags:"
153
- new_tags.sort().each(){|tag|
154
- mail.puts `git show #{tag} --no-decorate -q | awk '!p;/^-----END PGP SIGNATURE-----/{p=1}'`
155
- mail.puts ""
156
- }
157
- mail.puts "It's available at the normal places:"
132
+ mail_path=`mktemp`.chomp()
133
+ mail = File.open(mail_path, "w+")
134
+ mail.puts "From " + runGit("rev-parse HEAD") + " " + `date`.chomp()
135
+ mail.puts "From: " + runGit("config user.name") +
136
+ " <" + runGit("config user.email") +">"
137
+ mail.puts "To: " + runGit("config patch.target")
138
+ mail.puts "Date: " + `date -R`.chomp()
139
+ mail.puts "Subject: [ANNOUNCE] " + File.basename(@path) + " " +
140
+ (new_tags.length > 1 ?
141
+ (new_tags[0 .. -2].join(", ") + " and " + new_tags[-1]) :
142
+ new_tags.join(" ")) +
143
+ " has been tagged/released"
144
+ mail.puts ""
145
+ mail.puts "Here's the information from the tags:"
146
+ new_tags.sort().each(){|tag|
147
+ mail.puts `git show #{tag} --no-decorate -q | awk '!p;/^-----END PGP SIGNATURE-----/{p=1}'`
158
148
  mail.puts ""
159
- mail.puts "git://github.com/#{@remote_stable}"
160
- mail.puts "https://github.com/#{@remote_stable}/releases"
161
- mail.close()
149
+ }
150
+ mail.puts "It's available at the normal places:"
151
+ mail.puts ""
152
+ mail.puts "git://github.com/#{@remote_stable}"
153
+ mail.puts "https://github.com/#{@remote_stable}/releases"
154
+ mail.close()
162
155
 
163
- puts runGitImap("< #{mail_path}; rm -f #{mail_path}")
164
- end
156
+ puts runGitImap("< #{mail_path}; rm -f #{mail_path}")
165
157
 
166
158
  puts "Last chance to cancel before submitting"
167
- rep= GitMaintain::confirm(opts, "submit these releases")
159
+ rep= GitMaintain::confirm("submit these releases")
168
160
  if rep != 'y' then
169
161
  raise "Aborting.."
170
162
  end
171
- puts `#{@@SUBMIT_BINARY}`
163
+ puts `#{SUBMIT_BINARY}`
172
164
  end
173
165
  def findStableBase(branch)
174
166
  @stable_base_patterns.each(){|pattern, base|
175
- return base if branch =~ /#{pattern}\// || branch =~ /#{pattern}$/
167
+ return base if branch =~ /#{pattern}\//
176
168
  }
177
169
  raise("Could not a find a stable base for branch #{branch}")
178
170
  end
@@ -184,7 +176,7 @@ module GitMaintain
184
176
  puts getSuffixList()
185
177
  end
186
178
  def submit_release(opts)
187
- submitReleases(opts)
179
+ submitReleases()
188
180
  end
189
181
  end
190
182
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-maintain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2.pre.25.gb2af5c1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Morey-Chaisemartin
@@ -58,9 +58,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
58
58
  version: '0'
59
59
  required_rubygems_version: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - ">"
61
+ - - ">="
62
62
  - !ruby/object:Gem::Version
63
- version: 1.3.1
63
+ version: '0'
64
64
  requirements: []
65
65
  rubyforge_project:
66
66
  rubygems_version: 2.7.7