git-multi 6.0.0 → 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|