git-multi 6.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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/git/multi/config.rb +3 -4
- data/lib/git/multi/gemspec.rb +7 -0
- data/lib/git/multi/report.rb +4 -1
- data/lib/git/multi/version.rb +1 -1
- data/lib/git/multi.rb +23 -8
- data/man/git-multi.1 +1 -6
- data/man/git-multi.erb +0 -3
- data/man/git-multi.html +2 -10
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0124014ecd67cbda989511455a0a46878a40365660a613337c87b35813a48af8
|
4
|
+
data.tar.gz: 46971c1b9b60f26a13eb67453d5ab0f9e88bbcf795ed6709b26b6511d8c341c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9061a4c54c89b1eb6ad29949e0c72c6d4d2aadce7e37e498cfc5b2ecd8cbd769685e81d9f188b9d12aea30079d7fbb71944de86a6910a66f2734a074a807eea
|
7
|
+
data.tar.gz: 58c513e28b65dcd040b8ac1bf29c62c7130dcf848f0f106db2052ff7578381260b30c4f182c30ba61b4f819cb0a55fd72c9c8773a8a5d08dd3d48b5b93e65f2f
|
data/Gemfile.lock
CHANGED
data/lib/git/multi/config.rb
CHANGED
@@ -7,8 +7,8 @@ module Git
|
|
7
7
|
value.empty? && default ? default : value
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
11
|
-
list = `git config --get-all
|
10
|
+
def global_options(name)
|
11
|
+
list = `git config --global --get-all #{name}`
|
12
12
|
list.split($RS).map(&:strip).map(&:freeze)
|
13
13
|
end
|
14
14
|
|
@@ -22,8 +22,7 @@ module Git
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def env_var(name, default = nil)
|
25
|
-
|
26
|
-
(value.nil? || value.empty?) && default ? default : value
|
25
|
+
ENV.fetch(name, default)
|
27
26
|
end
|
28
27
|
end
|
29
28
|
end
|
data/lib/git/multi/gemspec.rb
CHANGED
@@ -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
|
data/lib/git/multi/report.rb
CHANGED
@@ -35,6 +35,9 @@ module Git
|
|
35
35
|
Git::Multi.missing_repositories_for(owner).each do |missing|
|
36
36
|
setting_status(["\tmissing", missing.full_name], valid: false, optional: false)
|
37
37
|
end
|
38
|
+
Git::Multi.excluded_repositories_for(owner).each do |excluded|
|
39
|
+
setting_status(["\texcluded", excluded.full_name], valid: false, optional: false)
|
40
|
+
end
|
38
41
|
setting_status(["\tsubdirs", subdir_count, "(#{surplus_count} surplus)"])
|
39
42
|
end
|
40
43
|
|
@@ -44,7 +47,7 @@ module Git
|
|
44
47
|
if github_count.zero?
|
45
48
|
setting_status([message, 'listed but not configured'], valid: false, optional: false)
|
46
49
|
else
|
47
|
-
setting_status([message], true)
|
50
|
+
setting_status([message], valid: true)
|
48
51
|
Git::Multi.repositories_for(superproject).each do |repo|
|
49
52
|
if File.directory? repo.local_path
|
50
53
|
setting_status(["\tcloned ", repo.full_name], valid: true)
|
data/lib/git/multi/version.rb
CHANGED
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
|
@@ -194,6 +195,8 @@ module Git
|
|
194
195
|
repo.parent_dir = Pathname.new(File.join(WORKAREA, repo.owner.login))
|
195
196
|
repo.local_path = Pathname.new(File.join(WORKAREA, repo.full_name))
|
196
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)
|
197
200
|
# fix 'repo' => https://github.com/octokit/octokit.rb/issues/727
|
198
201
|
repo.compliant_ssh_url = "ssh://#{repo.ssh_url.split(':', 2).join('/')}"
|
199
202
|
# remove optional '.git' suffix from 'git@github.com:pvdb/git-multi.git'
|
@@ -213,7 +216,11 @@ module Git
|
|
213
216
|
# lists of repos for a given multi-repo
|
214
217
|
#
|
215
218
|
|
216
|
-
def
|
219
|
+
def full_names_for(superproject)
|
220
|
+
global_options("superproject.#{superproject}.repo")
|
221
|
+
end
|
222
|
+
|
223
|
+
def all_repositories_for(multi_repo = nil)
|
217
224
|
case (owner = superproject = full_names = multi_repo)
|
218
225
|
when nil
|
219
226
|
repositories # all of them
|
@@ -226,26 +233,34 @@ module Git
|
|
226
233
|
repository.owner.login == owner
|
227
234
|
}
|
228
235
|
when *SUPERPROJECTS
|
229
|
-
|
236
|
+
all_repositories_for(full_names_for(superproject))
|
230
237
|
else
|
231
238
|
raise ArgumentError, multi_repo
|
232
239
|
end
|
233
240
|
end
|
234
241
|
|
242
|
+
def repositories_for(multi_repo = nil)
|
243
|
+
all_repositories_for(multi_repo).delete_if(&:excluded)
|
244
|
+
end
|
245
|
+
|
235
246
|
#
|
236
247
|
# lists of repositories with a given state
|
237
248
|
#
|
238
249
|
|
239
250
|
def archived_repositories_for(multi_repo = nil)
|
240
|
-
|
251
|
+
all_repositories_for(multi_repo).find_all(&:archived)
|
241
252
|
end
|
242
253
|
|
243
254
|
def forked_repositories_for(multi_repo = nil)
|
244
|
-
|
255
|
+
all_repositories_for(multi_repo).find_all(&:fork)
|
245
256
|
end
|
246
257
|
|
247
258
|
def private_repositories_for(multi_repo = nil)
|
248
|
-
|
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)
|
249
264
|
end
|
250
265
|
|
251
266
|
#
|
data/man/git-multi.1
CHANGED
@@ -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 \
|
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:
|
@@ -585,11 +585,6 @@ root directory where repos will been cloned
|
|
585
585
|
.RS 4
|
586
586
|
local, binary cache of GitHub repository metadata
|
587
587
|
.RE
|
588
|
-
.PP
|
589
|
-
\fB${HOME}/\&.git/multi/superprojects\&.config\fR
|
590
|
-
.RS 4
|
591
|
-
definitions for so\-called "superproject" multi\-repos
|
592
|
-
.RE
|
593
588
|
.SH "REFERENCES"
|
594
589
|
.sp
|
595
590
|
.RS 4
|
data/man/git-multi.erb
CHANGED
@@ -268,9 +268,6 @@ FILES
|
|
268
268
|
`${HOME}/.git/multi/repositories.byte`::
|
269
269
|
local, binary cache of GitHub repository metadata
|
270
270
|
|
271
|
-
`${HOME}/.git/multi/superprojects.config`::
|
272
|
-
definitions for so-called "superproject" multi-repos
|
273
|
-
|
274
271
|
REFERENCES
|
275
272
|
----------
|
276
273
|
|
data/man/git-multi.html
CHANGED
@@ -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>
|
751
|
+
<div class="paragraph"><p>This is <code>v7.0.0</code> of <em>git multi</em> … hooray!</p></div>
|
752
752
|
</div>
|
753
753
|
</div>
|
754
754
|
<div class="sect1">
|
@@ -1200,14 +1200,6 @@ git multi ++<multi_repo> --find 'language == "Ruby"' | git multi --raw 'ca
|
|
1200
1200
|
local, binary cache of GitHub repository metadata
|
1201
1201
|
</p>
|
1202
1202
|
</dd>
|
1203
|
-
<dt class="hdlist1">
|
1204
|
-
<code>${HOME}/.git/multi/superprojects.config</code>
|
1205
|
-
</dt>
|
1206
|
-
<dd>
|
1207
|
-
<p>
|
1208
|
-
definitions for so-called "superproject" multi-repos
|
1209
|
-
</p>
|
1210
|
-
</dd>
|
1211
1203
|
</dl></div>
|
1212
1204
|
</div>
|
1213
1205
|
</div>
|
@@ -1241,7 +1233,7 @@ the <code>jq</code> command-line utility:
|
|
1241
1233
|
<div id="footer">
|
1242
1234
|
<div id="footer-text">
|
1243
1235
|
Last updated
|
1244
|
-
2022-02-02
|
1236
|
+
2022-02-02 17:29:17 GMT
|
1245
1237
|
</div>
|
1246
1238
|
</div>
|
1247
1239
|
</body>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-multi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 7.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Vandenberk
|
@@ -204,7 +204,11 @@ post_install_message: "\nThe only required setting for \e[1mgit multi\e[0m is:\n
|
|
204
204
|
config --global --add \e[1mgit.multi.users\e[0m <list_of_github_users>\n\tgit config
|
205
205
|
--global --add \e[1mgit.multi.organizations\e[0m <list_of_github_orgs>\n\nUnless
|
206
206
|
your top-level workarea is `${HOME}/Workarea` you should also set:\n\n\tgit config
|
207
|
-
--global --add \e[1mgit.multi.workarea\e[0m <your_root_workarea>\n\
|
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
|
208
212
|
\e[1mgit multi\e[0m ... the ultimate multi-repo utility for git!\n\n"
|
209
213
|
rdoc_options: []
|
210
214
|
require_paths:
|