git-multi 4.0.0 → 7.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ae3ea0db8c3ed8b96a4c03075a8fc03776e263dc
4
- data.tar.gz: f5bc88dda1be61636658ecdb265afed9059d81de
2
+ SHA256:
3
+ metadata.gz: 0124014ecd67cbda989511455a0a46878a40365660a613337c87b35813a48af8
4
+ data.tar.gz: 46971c1b9b60f26a13eb67453d5ab0f9e88bbcf795ed6709b26b6511d8c341c4
5
5
  SHA512:
6
- metadata.gz: ae0f27414bc44b20290191c1e126bea2a75fb248bbf64a0f361ffc606a0b55d6fd3f916185874ad6afdb24821972002adbd95c9b05aea47a09e19278c76f881f
7
- data.tar.gz: 94649a8d55edbcc6a4ef5e90313d6e46c9357ac87117036e555c17abba1a0609f64d1e5b79d1734b42797cf163e90482c21676fc4ea6daeae4495b327e04a931
6
+ metadata.gz: f9061a4c54c89b1eb6ad29949e0c72c6d4d2aadce7e37e498cfc5b2ecd8cbd769685e81d9f188b9d12aea30079d7fbb71944de86a6910a66f2734a074a807eea
7
+ data.tar.gz: 58c513e28b65dcd040b8ac1bf29c62c7130dcf848f0f106db2052ff7578381260b30c4f182c30ba61b4f819cb0a55fd72c9c8773a8a5d08dd3d48b5b93e65f2f
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  /vendor/
10
+ Brewfile.lock.json
data/.pryrc CHANGED
@@ -4,11 +4,13 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'git/multi'
5
5
 
6
6
  # this loads all 'git multi' contribs
7
- Dir.glob File.join(__dir__, 'contrib', '*', '*.rb'), &method(:require)
7
+ # rubocop:disable Lint/NonDeterministicRequireOrder
8
+ Dir.glob File.join(__dir__, 'contrib', '**', '*.rb'), &method(:require)
9
+ # rubocop:enable Lint/NonDeterministicRequireOrder
8
10
 
9
11
  # configure a logger
10
12
  require 'logger'
11
- logger = Logger.new(STDOUT)
13
+ logger = Logger.new($stdout)
12
14
  logger.level = Logger::INFO
13
15
 
14
16
  # configure Octokit middleware with logger
@@ -28,15 +30,21 @@ end
28
30
 
29
31
  # utility function to set pry context
30
32
  # to an instance of <Octokit::Client>
31
- def client() pry(Git::Hub.send(:client)); end
33
+ def client
34
+ pry(Git::Hub.send(:client))
35
+ end
32
36
 
33
37
  # utility function to set pry context
34
38
  # to the Array of github repositories
35
- def repos() pry(Git::Multi.repositories); end
39
+ def repos
40
+ pry(Git::Multi.repositories)
41
+ end
36
42
 
37
43
  # utility function to set pry context
38
44
  # to the various 'git multi' commands:
39
- def cmds() pry(Git::Multi::Commands); end
45
+ def cmds
46
+ pry(Git::Multi::Commands)
47
+ end
40
48
 
41
49
  # utility function to set context
42
50
  # to the named github repository:
data/.rubocop.yml CHANGED
@@ -1,14 +1,15 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.3
2
+ TargetRubyVersion: 2.6
3
+ NewCops: enable
3
4
  Exclude:
4
5
  - 'doc/*'
5
6
  - 'tmp/*'
6
7
  - 'pkg/*'
7
8
 
8
- Layout/EmptyLinesAroundClassBody:
9
- Enabled: false
10
- Layout/EmptyLinesAroundModuleBody:
11
- Enabled: false
9
+ require:
10
+ - rubocop-minitest
11
+ - rubocop-rake
12
+
12
13
  Layout/LineLength:
13
14
  Enabled: false
14
15
 
@@ -22,6 +23,9 @@ Metrics/MethodLength:
22
23
  Metrics/ModuleLength:
23
24
  Enabled: false
24
25
 
26
+ Rake/Desc:
27
+ Enabled: false
28
+
25
29
  Style/BlockDelimiters:
26
30
  Enabled: false
27
31
  Style/Documentation:
@@ -34,11 +38,14 @@ Style/NestedTernaryOperator:
34
38
  Enabled: false
35
39
  Style/RedundantBegin:
36
40
  Enabled: false
37
- Style/SingleLineMethods:
38
- Enabled: false
41
+
39
42
  Style/TrailingCommaInArguments:
40
43
  Enabled: false
41
44
  Style/TrailingCommaInArrayLiteral:
42
45
  Enabled: false
43
46
  Style/TrailingCommaInHashLiteral:
44
47
  Enabled: false
48
+
49
+ # https://github.com/rubocop/rubocop/issues/10394
50
+ Style/SwapValues:
51
+ Enabled: false
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.3.8
1
+ 2.6.9
data/Gemfile.lock CHANGED
@@ -1,51 +1,82 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- git-multi (4.0.0)
5
- faraday (>= 0.9)
4
+ git-multi (7.0.0)
5
+ faraday (~> 1)
6
6
  octokit (~> 4)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- addressable (2.7.0)
11
+ addressable (2.8.0)
12
12
  public_suffix (>= 2.0.2, < 5.0)
13
- ast (2.4.0)
14
- coderay (1.1.2)
15
- faraday (1.0.0)
13
+ ast (2.4.2)
14
+ coderay (1.1.3)
15
+ faraday (1.9.3)
16
+ faraday-em_http (~> 1.0)
17
+ faraday-em_synchrony (~> 1.0)
18
+ faraday-excon (~> 1.1)
19
+ faraday-httpclient (~> 1.0)
20
+ faraday-multipart (~> 1.0)
21
+ faraday-net_http (~> 1.0)
22
+ faraday-net_http_persistent (~> 1.0)
23
+ faraday-patron (~> 1.0)
24
+ faraday-rack (~> 1.0)
25
+ faraday-retry (~> 1.0)
26
+ ruby2_keywords (>= 0.0.4)
27
+ faraday-em_http (1.0.0)
28
+ faraday-em_synchrony (1.0.0)
29
+ faraday-excon (1.1.0)
30
+ faraday-httpclient (1.0.1)
31
+ faraday-multipart (1.0.3)
16
32
  multipart-post (>= 1.2, < 3)
33
+ faraday-net_http (1.0.1)
34
+ faraday-net_http_persistent (1.2.0)
35
+ faraday-patron (1.0.0)
36
+ faraday-rack (1.0.0)
37
+ faraday-retry (1.0.3)
17
38
  interception (0.5)
18
- jaro_winkler (1.5.4)
19
- method_source (0.9.2)
20
- minitest (5.14.0)
39
+ method_source (1.0.0)
40
+ minitest (5.15.0)
21
41
  multipart-post (2.1.1)
22
- octokit (4.15.0)
42
+ octokit (4.22.0)
23
43
  faraday (>= 0.9)
24
44
  sawyer (~> 0.8.0, >= 0.5.3)
25
- parallel (1.19.1)
26
- parser (2.7.0.2)
27
- ast (~> 2.4.0)
28
- pry (0.12.2)
29
- coderay (~> 1.1.0)
30
- method_source (~> 0.9.0)
31
- pry-rescue (1.5.0)
45
+ parallel (1.21.0)
46
+ parser (3.1.0.0)
47
+ ast (~> 2.4.1)
48
+ pry (0.14.1)
49
+ coderay (~> 1.1)
50
+ method_source (~> 1.0)
51
+ pry-rescue (1.5.2)
32
52
  interception (>= 0.5)
33
53
  pry (>= 0.12.0)
34
- public_suffix (4.0.3)
35
- rainbow (3.0.0)
36
- rake (13.0.1)
37
- rubocop (0.79.0)
38
- jaro_winkler (~> 1.5.1)
54
+ public_suffix (4.0.6)
55
+ rainbow (3.1.1)
56
+ rake (13.0.6)
57
+ regexp_parser (2.2.0)
58
+ rexml (3.2.5)
59
+ rubocop (1.25.0)
39
60
  parallel (~> 1.10)
40
- parser (>= 2.7.0.1)
61
+ parser (>= 3.1.0.0)
41
62
  rainbow (>= 2.2.2, < 4.0)
63
+ regexp_parser (>= 1.8, < 3.0)
64
+ rexml
65
+ rubocop-ast (>= 1.15.1, < 2.0)
42
66
  ruby-progressbar (~> 1.7)
43
- unicode-display_width (>= 1.4.0, < 1.7)
44
- ruby-progressbar (1.10.1)
67
+ unicode-display_width (>= 1.4.0, < 3.0)
68
+ rubocop-ast (1.15.1)
69
+ parser (>= 3.0.1.1)
70
+ rubocop-minitest (0.17.1)
71
+ rubocop (>= 0.90, < 2.0)
72
+ rubocop-rake (0.6.0)
73
+ rubocop (~> 1.0)
74
+ ruby-progressbar (1.11.0)
75
+ ruby2_keywords (0.0.5)
45
76
  sawyer (0.8.2)
46
77
  addressable (>= 2.3.5)
47
78
  faraday (> 0.8, < 2.0)
48
- unicode-display_width (1.6.1)
79
+ unicode-display_width (2.1.0)
49
80
 
50
81
  PLATFORMS
51
82
  ruby
@@ -58,6 +89,8 @@ DEPENDENCIES
58
89
  pry-rescue
59
90
  rake
60
91
  rubocop
92
+ rubocop-minitest
93
+ rubocop-rake
61
94
 
62
95
  BUNDLED WITH
63
- 2.1.4
96
+ 2.3.6
data/README.md CHANGED
@@ -35,6 +35,8 @@ There are plenty of other utilities out there that do something similar, but typ
35
35
 
36
36
  ## Usage
37
37
 
38
+ Installing the gem installs the `git-multi` executable on your system's `${PATH}`, which means it can be run as a so-called [git subcommand](https://git.github.io/htmldocs/howto/new-command.html#:~:text=Runtime%20environment), as follows: `git multi`; a good starting point is:
39
+
38
40
  $ git multi --help
39
41
 
40
42
  ## Known Issues
data/bin/console CHANGED
@@ -6,4 +6,7 @@ require 'git/multi'
6
6
  require 'pry'
7
7
  Pry.start
8
8
 
9
+ # require "irb"
10
+ # IRB.start(__FILE__)
11
+
9
12
  # That's all Folks!
data/exe/git-multi CHANGED
@@ -6,13 +6,13 @@ require 'git/multi'
6
6
 
7
7
  multi_repo = command = nil
8
8
 
9
- if !STDIN.tty?
10
- # read list of repo full names from STDIN (~pseudo multi repo)
11
- multi_repo = STDIN.readlines.map(&:strip).map(&:freeze).freeze
12
- # reopen STDIN (to ensure all `Kernel.system` based cmds work)
13
- STDIN.reopen('/dev/tty')
14
- elsif (command = ARGV.shift)&.start_with? '++'
15
- multi_repo = command[2..-1]
9
+ if !$stdin.tty?
10
+ # read list of repo full names from $stdin (~pseudo multi-repo)
11
+ multi_repo = $stdin.readlines.map(&:strip).map(&:freeze).freeze
12
+ # reopen $stdin (to ensure all `Kernel.system` based cmds work)
13
+ $stdin.reopen('/dev/tty')
14
+ elsif (command = ARGV.shift)&.start_with?('++')
15
+ multi_repo = command.delete('++')
16
16
  command = nil
17
17
  end
18
18
 
@@ -54,8 +54,8 @@ begin
54
54
  end
55
55
  rescue ArgumentError
56
56
  abort \
57
- "Unknown multi repo: #{$ERROR_INFO.message}\n\n" \
58
- '(use `git multi --report` to list all known multi repos)'
57
+ "Unknown multi-repo: #{$ERROR_INFO.message}\n\n" \
58
+ '(use `git multi --report` to list all known multi-repos)'
59
59
  end
60
60
 
61
61
  # That's all Folks!
data/git-multi.gemspec CHANGED
@@ -14,7 +14,17 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = 'https://github.com/pvdb/git-multi'
15
15
  spec.license = 'MIT'
16
16
 
17
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
17
+ spec.required_ruby_version = ['>= 2.6.0', '< 2.7.0']
18
+
19
+ spec.metadata['homepage_uri'] = spec.homepage
20
+ spec.metadata['source_code_uri'] = spec.homepage
21
+ spec.metadata['changelog_uri'] = File.join(spec.homepage, 'blob', 'master', 'README.md')
22
+
23
+ spec.metadata['rubygems_mfa_required'] = 'true'
24
+
25
+ # Specify which files should be added to the gem when it is released.
26
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
27
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
18
28
  `git ls-files -z`
19
29
  .split("\x0")
20
30
  .reject { |f| f.match(%r{^(test|spec|features)/}) }
@@ -25,7 +35,7 @@ Gem::Specification.new do |spec|
25
35
 
26
36
  spec.post_install_message = Git::Multi::PIM
27
37
 
28
- spec.add_dependency 'faraday', '>= 0.9'
38
+ spec.add_dependency 'faraday', '~> 1'
29
39
  spec.add_dependency 'octokit', '~> 4'
30
40
 
31
41
  spec.add_development_dependency 'bundler'
@@ -34,4 +44,6 @@ Gem::Specification.new do |spec|
34
44
  spec.add_development_dependency 'pry-rescue'
35
45
  spec.add_development_dependency 'rake'
36
46
  spec.add_development_dependency 'rubocop'
47
+ spec.add_development_dependency 'rubocop-minitest'
48
+ spec.add_development_dependency 'rubocop-rake'
37
49
  end
data/lib/ext/dir.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  class Dir
2
2
  def git_repos(subdir = '*')
3
3
  Dir.glob(File.join(path, subdir, '*', '.git')).map { |path_to_git_dir|
4
- path_to_git_repo = File.dirname(path_to_git_dir) # without "/.git"
5
- repo_name = path_to_git_repo[%r{[^\/]+\/[^\/]+\z}] # e.g. "pvdb/git-multi"
6
- def repo_name.full_name() self; end
4
+ path_to_git_repo = File.dirname(path_to_git_dir) # without "/.git"
5
+ repo_name = path_to_git_repo[%r{[^/]+/[^/]+\z}] # e.g. "pvdb/git-multi"
6
+ def repo_name.full_name() self; end # rubocop:disable Style/SingleLineMethods
7
7
  repo_name
8
8
  }
9
9
  end
data/lib/ext/string.rb CHANGED
@@ -1,7 +1,5 @@
1
- # rubocop:disable Layout/EmptyLineBetweenDefs
2
-
3
1
  class String
4
-
2
+ # rubocop:disable Style/SingleLineMethods
5
3
  def colorize(color_code) "\e[#{color_code}m#{self}\e[0m"; end
6
4
 
7
5
  def bold() colorize('1'); end
@@ -12,7 +10,5 @@ class String
12
10
  def green() colorize('32'); end
13
11
 
14
12
  def undent() gsub(/^.{#{slice(/^ +/).length}}/, ''); end
15
-
13
+ # rubocop:enable Style/SingleLineMethods
16
14
  end
17
-
18
- # rubocop:enable Layout/EmptyLineBetweenDefs
data/lib/git/hub.rb CHANGED
@@ -2,10 +2,10 @@ require 'octokit'
2
2
 
3
3
  begin
4
4
  require 'net/http/persistent'
5
- Octokit.middleware.swap(
6
- Faraday::Adapter::NetHttp, # default Faraday adapter
7
- Faraday::Adapter::NetHttpPersistent # experimental Faraday adapter
8
- )
5
+ if Octokit.middleware.adapter == Faraday::Adapter::NetHttp
6
+ adapter = Faraday::RackBuilder::Handler.new(Faraday::Adapter::NetHttpPersistent)
7
+ Octokit.middleware.instance_variable_set(:@adapter, adapter)
8
+ end
9
9
  rescue LoadError
10
10
  # NOOP - `Net::HTTP::Persistent` is optional, so
11
11
  # if the gem isn't installed, then we run with the
@@ -16,7 +16,6 @@ end
16
16
 
17
17
  module Git
18
18
  module Hub
19
-
20
19
  module_function
21
20
 
22
21
  def client
@@ -30,31 +29,31 @@ module Git
30
29
 
31
30
  def connected?
32
31
  @connected ||= begin
33
- client.validate_credentials
34
- true
35
- rescue Faraday::ConnectionFailed
36
- false
37
- end
32
+ client.validate_credentials
33
+ true
34
+ rescue Faraday::ConnectionFailed
35
+ false
36
+ end
38
37
  end
39
38
 
40
39
  # FIXME: update login as part of `--refresh`
41
40
 
42
41
  def login
43
42
  @login ||= begin
44
- client.user.login
45
- rescue Octokit::Unauthorized, Faraday::ConnectionFailed
46
- nil
47
- end
43
+ client.user.login
44
+ rescue Octokit::Unauthorized, Faraday::ConnectionFailed
45
+ nil
46
+ end
48
47
  end
49
48
 
50
49
  # FIXME: update orgs as part of `--refresh`
51
50
 
52
51
  def orgs
53
52
  @orgs ||= begin
54
- client.organizations.map(&:login)
55
- rescue Octokit::Unauthorized, Faraday::ConnectionFailed
56
- []
57
- end
53
+ client.organizations.map(&:login)
54
+ rescue Octokit::Unauthorized, Faraday::ConnectionFailed
55
+ []
56
+ end
58
57
  end
59
58
 
60
59
  # pick a (semi-)random repo from GitHub
@@ -77,10 +76,10 @@ module Git
77
76
 
78
77
  @user_repositories = Hash.new { |repos, (user, type)|
79
78
  repos[[user, type]] = begin
80
- client
81
- .repositories(user, type: type)
82
- .sort_by { |repo| repo[:name].downcase }
83
- end
79
+ client
80
+ .repositories(user, type: type)
81
+ .sort_by { |repo| repo[:name].downcase }
82
+ end
84
83
  }
85
84
 
86
85
  def user_repositories(user, type = :owner)
@@ -94,16 +93,15 @@ module Git
94
93
 
95
94
  @org_repositories = Hash.new { |repos, (org, type)|
96
95
  repos[[org, type]] = begin
97
- client
98
- .org_repositories(org, type: type)
99
- .sort_by { |repo| repo[:name].downcase }
100
- end
96
+ client
97
+ .org_repositories(org, type: type)
98
+ .sort_by { |repo| repo[:name].downcase }
99
+ end
101
100
  }
102
101
 
103
102
  def org_repositories(org, type = :owner)
104
103
  # type can be one of: all, public, private, forks, sources, member
105
104
  @org_repositories[[org, type]]
106
105
  end
107
-
108
106
  end
109
107
  end
@@ -1,7 +1,6 @@
1
1
  module Git
2
2
  module Multi
3
3
  module Commands
4
-
5
4
  module_function
6
5
 
7
6
  def version
@@ -134,7 +133,7 @@ module Git
134
133
  begin
135
134
  if repository.instance_eval(commands.join(' && '))
136
135
  repository.just_do_it(
137
- ->(_repo) { nil },
136
+ ->(_repo) {}, # empty lambda: nil
138
137
  ->(repo) { puts repo.full_name },
139
138
  )
140
139
  end
@@ -203,7 +202,6 @@ module Git
203
202
  end
204
203
 
205
204
  private_class_method :system
206
-
207
205
  end
208
206
  end
209
207
  end
@@ -1,6 +1,5 @@
1
1
  module Git
2
2
  module Multi
3
-
4
3
  module_function
5
4
 
6
5
  def local_option(path, name, default = nil)
@@ -8,8 +7,8 @@ module Git
8
7
  value.empty? && default ? default : value
9
8
  end
10
9
 
11
- def full_names_for(superproject)
12
- list = `git config --get-all superproject.#{superproject}.repo`
10
+ def global_options(name)
11
+ list = `git config --global --get-all #{name}`
13
12
  list.split($RS).map(&:strip).map(&:freeze)
14
13
  end
15
14
 
@@ -23,9 +22,7 @@ module Git
23
22
  end
24
23
 
25
24
  def env_var(name, default = nil)
26
- value = ENV[name]
27
- (value.nil? || value.empty?) && default ? default : value
25
+ ENV.fetch(name, default)
28
26
  end
29
-
30
27
  end
31
28
  end
@@ -16,6 +16,13 @@ module Git
16
16
 
17
17
  \tgit config --global --add \033[1mgit.multi.workarea\033[0m <your_root_workarea>
18
18
 
19
+ You can specify a list of user or organization repositories to ignore:
20
+
21
+ \tgit config --global --add \033[1mgit.multi.exclude\033[0m <org_name>/<repo_name>
22
+ \tgit config --global --add \033[1mgit.multi.exclude\033[0m <user_name>/<repo_name>
23
+
24
+ (can be used multiple times to exclude multiple user or organization repositories)
25
+
19
26
  Thanks for using \033[1mgit multi\033[0m ... the ultimate multi-repo utility for git!
20
27
 
21
28
  PIM
@@ -1,7 +1,6 @@
1
1
  module Git
2
2
  module Multi
3
3
  module Report
4
-
5
4
  TICK = ['2714'.hex].pack('U*').green.freeze
6
5
  CROSS = ['2718'.hex].pack('U*').red.freeze
7
6
  ARROW = ['2794'.hex].pack('U*').blue.freeze
@@ -34,7 +33,10 @@ module Git
34
33
  setting_status(["\tGitHub ", "#{github_count} repositories"])
35
34
  setting_status(["\tcloned ", cloned_count, "(#{missing_count} missing)"])
36
35
  Git::Multi.missing_repositories_for(owner).each do |missing|
37
- setting_status(["\tmissing", missing.full_name], false, false)
36
+ setting_status(["\tmissing", missing.full_name], valid: false, optional: false)
37
+ end
38
+ Git::Multi.excluded_repositories_for(owner).each do |excluded|
39
+ setting_status(["\texcluded", excluded.full_name], valid: false, optional: false)
38
40
  end
39
41
  setting_status(["\tsubdirs", subdir_count, "(#{surplus_count} surplus)"])
40
42
  end
@@ -43,14 +45,14 @@ module Git
43
45
  github_count = Git::Multi.repositories_for(superproject).count
44
46
 
45
47
  if github_count.zero?
46
- setting_status([message, 'listed but not configured'], false, false)
48
+ setting_status([message, 'listed but not configured'], valid: false, optional: false)
47
49
  else
48
- setting_status([message], true)
50
+ setting_status([message], valid: true)
49
51
  Git::Multi.repositories_for(superproject).each do |repo|
50
52
  if File.directory? repo.local_path
51
- setting_status(["\tcloned ", repo.full_name], true)
53
+ setting_status(["\tcloned ", repo.full_name], valid: true)
52
54
  else
53
- setting_status(["\tmissing", repo.full_name], false, false)
55
+ setting_status(["\tmissing", repo.full_name], valid: false, optional: false)
54
56
  end
55
57
  end
56
58
  end
@@ -77,7 +79,7 @@ module Git
77
79
  elsif token.empty?
78
80
  '(empty)'
79
81
  else
80
- "#{'*' * 36}#{token[36..-1]}"
82
+ "#{'*' * 36}#{token[36..]}"
81
83
  end
82
84
  end
83
85
 
@@ -103,7 +105,7 @@ module Git
103
105
  end
104
106
  end
105
107
 
106
- private_class_method def setting_status(messages, valid = false, optional = true)
108
+ private_class_method def setting_status(messages, valid: false, optional: true)
107
109
  fields = messages.compact.join(' - ')
108
110
  icon = valid ? TICK : optional ? ARROW : CROSS
109
111
  puts "#{icon} #{fields}"
@@ -116,19 +118,18 @@ module Git
116
118
  abbreviate(file),
117
119
  File.file?(file) ? "#{File.size(file).commify} bytes" : nil,
118
120
  ],
119
- file && !file.empty? && File.file?(file),
120
- false
121
+ valid: file && !file.empty? && File.file?(file),
122
+ optional: false,
121
123
  )
122
124
  end
123
125
 
124
126
  private_class_method def directory_status(messages, directory)
125
127
  setting_status(
126
128
  messages,
127
- directory && !directory.empty? && File.directory?(directory),
128
- false
129
+ valid: directory && !directory.empty? && File.directory?(directory),
130
+ optional: false,
129
131
  )
130
132
  end
131
-
132
133
  end
133
134
  end
134
135
  end
@@ -1,7 +1,7 @@
1
1
  module Git
2
2
  module Multi
3
3
  NAME = 'git-multi'.freeze
4
- VERSION = '4.0.0'.freeze
4
+ VERSION = '7.0.0'.freeze
5
5
 
6
6
  def self.version
7
7
  "#{NAME} v#{VERSION}"
data/lib/git/multi.rb CHANGED
@@ -36,9 +36,6 @@ module Git
36
36
  TOKEN = global_option('github.token', DEFAULT_TOKEN)
37
37
 
38
38
  GIT_MULTI_DIR = File.join(HOME, '.git', 'multi')
39
-
40
- FileUtils.mkdir_p(GIT_MULTI_DIR) # ensure `~/.git/multi` directory exists
41
-
42
39
  GITHUB_CACHE = File.join(GIT_MULTI_DIR, 'repositories.byte')
43
40
 
44
41
  USERS = global_list('git.multi.users')
@@ -46,6 +43,7 @@ module Git
46
43
  SUPERPROJECTS = global_list('git.multi.superprojects')
47
44
 
48
45
  MULTI_REPOS = (USERS + ORGANIZATIONS + SUPERPROJECTS)
46
+ EXCLUDED_REPOS = global_options('git.multi.exclude')
49
47
 
50
48
  MAN_PAGE = File.expand_path('../../man/git-multi.1', __dir__)
51
49
  HTML_PAGE = File.expand_path('../../man/git-multi.html', __dir__)
@@ -129,6 +127,9 @@ module Git
129
127
  #
130
128
 
131
129
  def refresh_repositories
130
+ # ensure `~/.git/multi` directory exists
131
+ FileUtils.mkdir_p(GIT_MULTI_DIR)
132
+
132
133
  File.open(GITHUB_CACHE, 'wb') do |file|
133
134
  Marshal.dump(github_repositories, file)
134
135
  end
@@ -139,7 +140,6 @@ module Git
139
140
  #
140
141
 
141
142
  module Nike
142
-
143
143
  # rubocop:disable Metrics/PerceivedComplexity
144
144
  # rubocop:disable Metrics/CyclomaticComplexity
145
145
  def just_do_it(interactive, pipelined, captured = nil, options = {})
@@ -149,15 +149,15 @@ module Git
149
149
  else Dir.pwd
150
150
  end
151
151
  Dir.chdir(working_dir) do
152
- if STDOUT.tty? && STDERR.tty?
153
- STDOUT.puts "#{full_name.invert} (#{fractional_index})"
152
+ if $stdout.tty? && $stderr.tty?
153
+ $stdout.puts "#{full_name.invert} (#{fractional_index})"
154
154
  interactive.call(self)
155
- elsif STDERR.tty? && captured
155
+ elsif $stderr.tty? && captured
156
156
  errors = File.join(ENV['TMPDIR'], "git-multi.#{$PID}")
157
157
  captured.call(self, errors)
158
158
  if File.exist?(errors) && !File.zero?(errors)
159
159
  # rubocop:disable Style/StderrPuts
160
- STDERR.puts "#{full_name.invert} (#{fractional_index})"
160
+ $stderr.puts "#{full_name.invert} (#{fractional_index})"
161
161
  Kernel.system "cat #{errors} > /dev/tty ;"
162
162
  # rubocop:enable Style/StderrPuts
163
163
  end
@@ -182,7 +182,6 @@ module Git
182
182
  end
183
183
  end
184
184
  end
185
-
186
185
  end
187
186
 
188
187
  def repositories
@@ -196,8 +195,10 @@ module Git
196
195
  repo.parent_dir = Pathname.new(File.join(WORKAREA, repo.owner.login))
197
196
  repo.local_path = Pathname.new(File.join(WORKAREA, repo.full_name))
198
197
  repo.fractional_index = "#{index + 1}/#{repos.count}"
198
+ # git multi will "hard ignore" all excluded repos
199
+ repo.excluded = EXCLUDED_REPOS.include?(repo.full_name)
199
200
  # fix 'repo' => https://github.com/octokit/octokit.rb/issues/727
200
- repo.compliant_ssh_url = 'ssh://' + repo.ssh_url.split(':', 2).join('/')
201
+ repo.compliant_ssh_url = "ssh://#{repo.ssh_url.split(':', 2).join('/')}"
201
202
  # remove optional '.git' suffix from 'git@github.com:pvdb/git-multi.git'
202
203
  repo.abbreviated_ssh_url = repo.ssh_url.chomp('.git')
203
204
  # extend 'repo' with 'just do it' capabilities
@@ -215,7 +216,11 @@ module Git
215
216
  # lists of repos for a given multi-repo
216
217
  #
217
218
 
218
- def repositories_for(multi_repo = nil)
219
+ def full_names_for(superproject)
220
+ global_options("superproject.#{superproject}.repo")
221
+ end
222
+
223
+ def all_repositories_for(multi_repo = nil)
219
224
  case (owner = superproject = full_names = multi_repo)
220
225
  when nil
221
226
  repositories # all of them
@@ -228,26 +233,34 @@ module Git
228
233
  repository.owner.login == owner
229
234
  }
230
235
  when *SUPERPROJECTS
231
- repositories_for(full_names_for(superproject))
236
+ all_repositories_for(full_names_for(superproject))
232
237
  else
233
238
  raise ArgumentError, multi_repo
234
239
  end
235
240
  end
236
241
 
242
+ def repositories_for(multi_repo = nil)
243
+ all_repositories_for(multi_repo).delete_if(&:excluded)
244
+ end
245
+
237
246
  #
238
247
  # lists of repositories with a given state
239
248
  #
240
249
 
241
250
  def archived_repositories_for(multi_repo = nil)
242
- repositories_for(multi_repo).find_all(&:archived)
251
+ all_repositories_for(multi_repo).find_all(&:archived)
243
252
  end
244
253
 
245
254
  def forked_repositories_for(multi_repo = nil)
246
- repositories_for(multi_repo).find_all(&:fork)
255
+ all_repositories_for(multi_repo).find_all(&:fork)
247
256
  end
248
257
 
249
258
  def private_repositories_for(multi_repo = nil)
250
- repositories_for(multi_repo).find_all(&:private)
259
+ all_repositories_for(multi_repo).find_all(&:private)
260
+ end
261
+
262
+ def excluded_repositories_for(multi_repo = nil)
263
+ all_repositories_for(multi_repo).find_all(&:excluded)
251
264
  end
252
265
 
253
266
  #
@@ -293,6 +306,5 @@ module Git
293
306
  File.directory? repo.local_path
294
307
  }
295
308
  end
296
-
297
309
  end
298
310
  end
data/man/git-multi.1 CHANGED
@@ -1,13 +1,13 @@
1
1
  '\" t
2
2
  .\" Title: git-multi
3
- .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
4
- .\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
5
- .\" Date: 01/25/2020
3
+ .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
4
+ .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
5
+ .\" Date: 02/02/2022
6
6
  .\" Manual: Git Manual
7
- .\" Source: Git 2.23.0.606.g08da6496b6.dirty
7
+ .\" Source: Git 2.35.1.4.g5d01301f2b.dirty
8
8
  .\" Language: English
9
9
  .\"
10
- .TH "GIT\-MULTI" "1" "01/25/2020" "Git 2\&.23\&.0\&.606\&.g08da64" "Git Manual"
10
+ .TH "GIT\-MULTI" "1" "02/02/2022" "Git 2\&.35\&.1\&.4\&.g5d01301f" "Git Manual"
11
11
  .\" -----------------------------------------------------------------
12
12
  .\" * Define some portability stuff
13
13
  .\" -----------------------------------------------------------------
@@ -31,7 +31,7 @@
31
31
  git-multi \- execute the same git command in multiple repositories
32
32
  .SH "VERSION"
33
33
  .sp
34
- This is \fBv4\&.0\&.0\fR of \fIgit multi\fR \&... hooray!
34
+ This is \fBv7\&.0\&.0\fR of \fIgit multi\fR \&... hooray!
35
35
  .SH "SYNOPSIS"
36
36
  .sp
37
37
  There are some options for \fBgit multi\fR itself, in which case it is invoked as follows:
@@ -48,7 +48,7 @@ To execute the same git command in multiple repositories, the invocation is as f
48
48
  .fi
49
49
  .sp
50
50
  .sp
51
- Both ways of running \fBgit multi\fR take an optional, so\-called "multi repo" argument to limit the operation to the list of repositories in the referenced "multi repo", ie\&. a single GitHub user or a single GitHub organization:
51
+ Both ways of running \fBgit multi\fR take an optional, so\-called "multi\-repo" argument to limit the operation to the list of repositories in the referenced "multi\-repo", ie\&. a single GitHub user or a single GitHub organization:
52
52
  .sp
53
53
  .nf
54
54
  \fIgit multi\fR ++<multi_repo> \-\-<option> [<option_arguments>]
@@ -490,32 +490,34 @@ The following is a list of valid arguments for the \fBgit multi \-\-query\fR opt
490
490
  .RS 4
491
491
  .\}
492
492
  .nf
493
- archive_url archived assignees_url
494
- blobs_url branches_url clone_url
495
- collaborators_url comments_url commits_url
496
- compare_url contents_url contributors_url
497
- created_at default_branch deployments_url
498
- description disabled downloads_url
499
- events_url fork forks
500
- forks_count forks_url full_name
501
- git_commits_url git_refs_url git_tags_url
502
- git_url has_downloads has_issues
503
- has_pages has_projects has_wiki
504
- homepage hooks_url html_url
505
- id issue_comment_url issue_events_url
506
- issues_url keys_url labels_url
507
- language languages_url license
508
- merges_url milestones_url mirror_url
509
- name network_count node_id
510
- notifications_url open_issues open_issues_count
511
- organization owner permissions
512
- private pulls_url pushed_at
513
- releases_url size ssh_url
514
- stargazers_count stargazers_url statuses_url
515
- subscribers_count subscribers_url subscription_url
516
- svn_url tags_url teams_url
517
- temp_clone_token trees_url updated_at
518
- url watchers watchers_count
493
+ allow_forking archive_url archived
494
+ assignees_url blobs_url branches_url
495
+ clone_url collaborators_url comments_url
496
+ commits_url compare_url contents_url
497
+ contributors_url created_at default_branch
498
+ deployments_url description disabled
499
+ downloads_url events_url fork
500
+ forks forks_count forks_url
501
+ full_name git_commits_url git_refs_url
502
+ git_tags_url git_url has_downloads
503
+ has_issues has_pages has_projects
504
+ has_wiki homepage hooks_url
505
+ html_url id is_template
506
+ issue_comment_url issue_events_url issues_url
507
+ keys_url labels_url language
508
+ languages_url license merges_url
509
+ milestones_url mirror_url name
510
+ network_count node_id notifications_url
511
+ open_issues open_issues_count organization
512
+ owner permissions private
513
+ pulls_url pushed_at releases_url
514
+ size ssh_url stargazers_count
515
+ stargazers_url statuses_url subscribers_count
516
+ subscribers_url subscription_url svn_url
517
+ tags_url teams_url temp_clone_token
518
+ topics trees_url updated_at
519
+ url visibility watchers
520
+ watchers_count
519
521
  .fi
520
522
  .if n \{\
521
523
  .RE
@@ -545,6 +547,33 @@ git multi \-\-json | jq \-r \*(Aq\&.[] | select(\&.fork == true) | \&.full_name\
545
547
  .if n \{\
546
548
  .RE
547
549
  .\}
550
+ .SH "CHAINED INVOCATION"
551
+ .sp
552
+ When \fBgit multi\fR gets its input from a Unix pipeline \fI(as opposed to from a TTY)\fR, it constructs an "implicit" multi repo comprised of the "full" repo names it reads from \fBSTDIN\fR \fI(one full repo name per line)\fR\&.
553
+ .sp
554
+ This allows multiple \fBgit multi\fR invocations to be chained, for example by using the \fB\-\-json\fR or \fB\-\-find\fR options as follows:
555
+ .sp
556
+ .if n \{\
557
+ .RS 4
558
+ .\}
559
+ .nf
560
+ # run a git query or subcommand on repos that aren\*(Aqt archived (on GitHub)
561
+ git multi ++<multi_repo> \-\-json | jq \-r \*(Aq\&.[] | select(\&."archived" == false) | \&."full_name"\*(Aq | git multi <git_command>
562
+ .fi
563
+ .if n \{\
564
+ .RE
565
+ .\}
566
+ .sp
567
+ .if n \{\
568
+ .RS 4
569
+ .\}
570
+ .nf
571
+ # run a shell command inside repos that have Ruby as their main language
572
+ git multi ++<multi_repo> \-\-find \*(Aqlanguage == "Ruby"\*(Aq | git multi \-\-raw \*(Aqcat \&.ruby\-version\*(Aq
573
+ .fi
574
+ .if n \{\
575
+ .RE
576
+ .\}
548
577
  .SH "FILES"
549
578
  .PP
550
579
  \fB${HOME}/Workarea\fR
@@ -556,11 +585,6 @@ root directory where repos will been cloned
556
585
  .RS 4
557
586
  local, binary cache of GitHub repository metadata
558
587
  .RE
559
- .PP
560
- \fB${HOME}/\&.git/multi/superprojects\&.config\fR
561
- .RS 4
562
- definitions for so\-called "superproject" multi repos
563
- .RE
564
588
  .SH "REFERENCES"
565
589
  .sp
566
590
  .RS 4
data/man/git-multi.erb CHANGED
@@ -26,9 +26,9 @@ invocation is as follows:
26
26
  [verse]
27
27
  'git multi' <git_command> [<git_command_arguments>]
28
28
 
29
- Both ways of running `git multi` take an optional, so-called "multi repo"
29
+ Both ways of running `git multi` take an optional, so-called "multi-repo"
30
30
  argument to limit the operation to the list of repositories in the referenced
31
- "multi repo", ie. a single GitHub user or a single GitHub organization:
31
+ "multi-repo", ie. a single GitHub user or a single GitHub organization:
32
32
 
33
33
  [verse]
34
34
  'git multi' ++<multi_repo> --<option> [<option_arguments>]
@@ -246,6 +246,19 @@ are some examples:
246
246
  # print out the name of all "forked" repositories
247
247
  git multi --json | jq -r '.[] | select(.fork == true) | .full_name'
248
248
 
249
+ CHAINED INVOCATION
250
+ ------------------
251
+
252
+ When `git multi` gets its input from a Unix pipeline _(as opposed to from a TTY)_, it constructs an "implicit" multi repo comprised of the "full" repo names it reads from `STDIN` _(one full repo name per line)_.
253
+
254
+ This allows multiple `git multi` invocations to be chained, for example by using the `--json` or `--find` options as follows:
255
+
256
+ # run a git query or subcommand on repos that aren't archived (on GitHub)
257
+ git multi ++<multi_repo> --json | jq -r '.[] | select(."archived" == false) | ."full_name"' | git multi <git_command>
258
+
259
+ # run a shell command inside repos that have Ruby as their main language
260
+ git multi ++<multi_repo> --find 'language == "Ruby"' | git multi --raw 'cat .ruby-version'
261
+
249
262
  FILES
250
263
  -----
251
264
 
@@ -255,9 +268,6 @@ FILES
255
268
  `${HOME}/.git/multi/repositories.byte`::
256
269
  local, binary cache of GitHub repository metadata
257
270
 
258
- `${HOME}/.git/multi/superprojects.config`::
259
- definitions for so-called "superproject" multi repos
260
-
261
271
  REFERENCES
262
272
  ----------
263
273
 
data/man/git-multi.html CHANGED
@@ -4,7 +4,7 @@
4
4
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
5
5
  <head>
6
6
  <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
7
- <meta name="generator" content="AsciiDoc 8.6.10" />
7
+ <meta name="generator" content="AsciiDoc 10.1.1" />
8
8
  <title>git-multi(1)</title>
9
9
  <style type="text/css">
10
10
  /* Shared CSS for AsciiDoc xhtml11 and html5 backends */
@@ -436,7 +436,7 @@ thead, p.table.header {
436
436
  p.table {
437
437
  margin-top: 0;
438
438
  }
439
- /* Because the table frame attribute is overriden by CSS in most browsers. */
439
+ /* Because the table frame attribute is overridden by CSS in most browsers. */
440
440
  div.tableblock > table[frame="void"] {
441
441
  border-style: none;
442
442
  }
@@ -748,7 +748,7 @@ git-multi(1) Manual Page
748
748
  <div class="sect1">
749
749
  <h2 id="_version">VERSION</h2>
750
750
  <div class="sectionbody">
751
- <div class="paragraph"><p>This is <code>v4.0.0</code> of <em>git multi</em> &#8230; hooray!</p></div>
751
+ <div class="paragraph"><p>This is <code>v7.0.0</code> of <em>git multi</em> &#8230; hooray!</p></div>
752
752
  </div>
753
753
  </div>
754
754
  <div class="sect1">
@@ -766,9 +766,9 @@ invocation is as follows:</p></div>
766
766
  <pre class="content"><em>git multi</em> &lt;git_command&gt; [&lt;git_command_arguments&gt;]</pre>
767
767
  <div class="attribution">
768
768
  </div></div>
769
- <div class="paragraph"><p>Both ways of running <code>git multi</code> take an optional, so-called "multi repo"
769
+ <div class="paragraph"><p>Both ways of running <code>git multi</code> take an optional, so-called "multi-repo"
770
770
  argument to limit the operation to the list of repositories in the referenced
771
- "multi repo", ie. a single GitHub user or a single GitHub organization:</p></div>
771
+ "multi-repo", ie. a single GitHub user or a single GitHub organization:</p></div>
772
772
  <div class="verseblock">
773
773
  <pre class="content"><em>git multi</em> ++&lt;multi_repo&gt; --&lt;option&gt; [&lt;option_arguments&gt;]</pre>
774
774
  <div class="attribution">
@@ -1113,32 +1113,34 @@ and cached locally <em>(in binary format)</em> for performance and offline usage
1113
1113
  <div class="paragraph"><p>The following is a list of valid arguments for the <code>git multi --query</code> option:</p></div>
1114
1114
  <div class="literalblock">
1115
1115
  <div class="content">
1116
- <pre><code>archive_url archived assignees_url
1117
- blobs_url branches_url clone_url
1118
- collaborators_url comments_url commits_url
1119
- compare_url contents_url contributors_url
1120
- created_at default_branch deployments_url
1121
- description disabled downloads_url
1122
- events_url fork forks
1123
- forks_count forks_url full_name
1124
- git_commits_url git_refs_url git_tags_url
1125
- git_url has_downloads has_issues
1126
- has_pages has_projects has_wiki
1127
- homepage hooks_url html_url
1128
- id issue_comment_url issue_events_url
1129
- issues_url keys_url labels_url
1130
- language languages_url license
1131
- merges_url milestones_url mirror_url
1132
- name network_count node_id
1133
- notifications_url open_issues open_issues_count
1134
- organization owner permissions
1135
- private pulls_url pushed_at
1136
- releases_url size ssh_url
1137
- stargazers_count stargazers_url statuses_url
1138
- subscribers_count subscribers_url subscription_url
1139
- svn_url tags_url teams_url
1140
- temp_clone_token trees_url updated_at
1141
- url watchers watchers_count</code></pre>
1116
+ <pre><code>allow_forking archive_url archived
1117
+ assignees_url blobs_url branches_url
1118
+ clone_url collaborators_url comments_url
1119
+ commits_url compare_url contents_url
1120
+ contributors_url created_at default_branch
1121
+ deployments_url description disabled
1122
+ downloads_url events_url fork
1123
+ forks forks_count forks_url
1124
+ full_name git_commits_url git_refs_url
1125
+ git_tags_url git_url has_downloads
1126
+ has_issues has_pages has_projects
1127
+ has_wiki homepage hooks_url
1128
+ html_url id is_template
1129
+ issue_comment_url issue_events_url issues_url
1130
+ keys_url labels_url language
1131
+ languages_url license merges_url
1132
+ milestones_url mirror_url name
1133
+ network_count node_id notifications_url
1134
+ open_issues open_issues_count organization
1135
+ owner permissions private
1136
+ pulls_url pushed_at releases_url
1137
+ size ssh_url stargazers_count
1138
+ stargazers_url statuses_url subscribers_count
1139
+ subscribers_url subscription_url svn_url
1140
+ tags_url teams_url temp_clone_token
1141
+ topics trees_url updated_at
1142
+ url visibility watchers
1143
+ watchers_count</code></pre>
1142
1144
  </div></div>
1143
1145
  </div>
1144
1146
  </div>
@@ -1162,6 +1164,23 @@ git multi --json | jq -r '.[] | select(.fork == true) | .full_name'</code></pre>
1162
1164
  </div>
1163
1165
  </div>
1164
1166
  <div class="sect1">
1167
+ <h2 id="_chained_invocation">CHAINED INVOCATION</h2>
1168
+ <div class="sectionbody">
1169
+ <div class="paragraph"><p>When <code>git multi</code> gets its input from a Unix pipeline <em>(as opposed to from a TTY)</em>, it constructs an "implicit" multi repo comprised of the "full" repo names it reads from <code>STDIN</code> <em>(one full repo name per line)</em>.</p></div>
1170
+ <div class="paragraph"><p>This allows multiple <code>git multi</code> invocations to be chained, for example by using the <code>--json</code> or <code>--find</code> options as follows:</p></div>
1171
+ <div class="literalblock">
1172
+ <div class="content">
1173
+ <pre><code># run a git query or subcommand on repos that aren't archived (on GitHub)
1174
+ git multi ++&lt;multi_repo&gt; --json | jq -r '.[] | select(."archived" == false) | ."full_name"' | git multi &lt;git_command&gt;</code></pre>
1175
+ </div></div>
1176
+ <div class="literalblock">
1177
+ <div class="content">
1178
+ <pre><code># run a shell command inside repos that have Ruby as their main language
1179
+ git multi ++&lt;multi_repo&gt; --find 'language == "Ruby"' | git multi --raw 'cat .ruby-version'</code></pre>
1180
+ </div></div>
1181
+ </div>
1182
+ </div>
1183
+ <div class="sect1">
1165
1184
  <h2 id="_files">FILES</h2>
1166
1185
  <div class="sectionbody">
1167
1186
  <div class="dlist"><dl>
@@ -1181,14 +1200,6 @@ git multi --json | jq -r '.[] | select(.fork == true) | .full_name'</code></pre>
1181
1200
  local, binary cache of GitHub repository metadata
1182
1201
  </p>
1183
1202
  </dd>
1184
- <dt class="hdlist1">
1185
- <code>${HOME}/.git/multi/superprojects.config</code>
1186
- </dt>
1187
- <dd>
1188
- <p>
1189
- definitions for so-called "superproject" multi repos
1190
- </p>
1191
- </dd>
1192
1203
  </dl></div>
1193
1204
  </div>
1194
1205
  </div>
@@ -1222,7 +1233,7 @@ the <code>jq</code> command-line utility:
1222
1233
  <div id="footer">
1223
1234
  <div id="footer-text">
1224
1235
  Last updated
1225
- 2020-01-25 11:55:56 GMT
1236
+ 2022-02-02 17:29:17 GMT
1226
1237
  </div>
1227
1238
  </div>
1228
1239
  </body>
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-multi
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 7.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Vandenberk
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-25 00:00:00.000000000 Z
11
+ date: 2022-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.9'
19
+ version: '1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.9'
26
+ version: '1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: octokit
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +122,34 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-minitest
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop-rake
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
125
153
  description: Run the same git command in a set of related repos
126
154
  email:
127
155
  - pvandenberk@mac.com
@@ -165,14 +193,22 @@ files:
165
193
  homepage: https://github.com/pvdb/git-multi
166
194
  licenses:
167
195
  - MIT
168
- metadata: {}
196
+ metadata:
197
+ homepage_uri: https://github.com/pvdb/git-multi
198
+ source_code_uri: https://github.com/pvdb/git-multi
199
+ changelog_uri: https://github.com/pvdb/git-multi/blob/master/README.md
200
+ rubygems_mfa_required: 'true'
169
201
  post_install_message: "\nThe only required setting for \e[1mgit multi\e[0m is:\n\n\tgit
170
202
  config --global --add \e[1mgithub.token\e[0m <your_github_oauth_token>\n\nThe following
171
203
  settings for \e[1mgit multi\e[0m are\noptional, and take 0, 1 or more values:\n\n\tgit
172
204
  config --global --add \e[1mgit.multi.users\e[0m <list_of_github_users>\n\tgit config
173
205
  --global --add \e[1mgit.multi.organizations\e[0m <list_of_github_orgs>\n\nUnless
174
206
  your top-level workarea is `${HOME}/Workarea` you should also set:\n\n\tgit config
175
- --global --add \e[1mgit.multi.workarea\e[0m <your_root_workarea>\n\nThanks for using
207
+ --global --add \e[1mgit.multi.workarea\e[0m <your_root_workarea>\n\nYou can specify
208
+ a list of user or organization repositories to ignore:\n\n\tgit config --global
209
+ --add \e[1mgit.multi.exclude\e[0m <org_name>/<repo_name>\n\tgit config --global
210
+ --add \e[1mgit.multi.exclude\e[0m <user_name>/<repo_name>\n\n(can be used multiple
211
+ times to exclude multiple user or organization repositories)\n\nThanks for using
176
212
  \e[1mgit multi\e[0m ... the ultimate multi-repo utility for git!\n\n"
177
213
  rdoc_options: []
178
214
  require_paths:
@@ -181,16 +217,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
181
217
  requirements:
182
218
  - - ">="
183
219
  - !ruby/object:Gem::Version
184
- version: '0'
220
+ version: 2.6.0
221
+ - - "<"
222
+ - !ruby/object:Gem::Version
223
+ version: 2.7.0
185
224
  required_rubygems_version: !ruby/object:Gem::Requirement
186
225
  requirements:
187
226
  - - ">="
188
227
  - !ruby/object:Gem::Version
189
228
  version: '0'
190
229
  requirements: []
191
- rubyforge_project:
192
- rubygems_version: 2.5.2.3
193
- signing_key:
230
+ rubygems_version: 3.0.3.1
231
+ signing_key:
194
232
  specification_version: 4
195
233
  summary: The ultimate multi-repo utility for git!
196
234
  test_files: []