mgit 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mgit/cli.rb +0 -3
- data/lib/mgit/command.rb +3 -0
- data/lib/mgit/commands/add.rb +3 -5
- data/lib/mgit/commands/clone.rb +2 -3
- data/lib/mgit/commands/config.rb +20 -6
- data/lib/mgit/commands/fetch.rb +8 -11
- data/lib/mgit/commands/ffmerge.rb +32 -15
- data/lib/mgit/commands/foreach.rb +5 -2
- data/lib/mgit/commands/grep.rb +2 -3
- data/lib/mgit/commands/head.rb +1 -1
- data/lib/mgit/commands/help.rb +3 -2
- data/lib/mgit/commands/show.rb +2 -4
- data/lib/mgit/commands/tags.rb +3 -4
- data/lib/mgit/configuration.rb +36 -9
- data/lib/mgit/exceptions.rb +14 -1
- data/lib/mgit/output.rb +16 -4
- data/lib/mgit/registry.rb +2 -0
- data/lib/mgit/repository.rb +17 -15
- data/lib/mgit/system.rb +70 -0
- data/lib/mgit/version.rb +1 -1
- data/lib/mgit.rb +1 -0
- metadata +34 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72dbe1352a6bd0ec28b0bcb8f058cd6827f4e2f1
|
4
|
+
data.tar.gz: 28d308609a2eccfe69bfab61574f251b31e562e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f2f0cc707a0f1e7a3cf1171348b06de20fc5f5bb3242f7a3cc2638b188ddb1bf7922290c955c3218c976093d67819f6f3902154deb30d26a8f548abc5380362
|
7
|
+
data.tar.gz: cc4893566bb6ffe38ad6169a6d25d786260f59b9c9336ce87331018c242ae466ff9639fa0bc30004d4dfc9f55198e360996914ce9004d9408e4a787932e3c4c5
|
data/lib/mgit/cli.rb
CHANGED
@@ -8,9 +8,6 @@ module MGit
|
|
8
8
|
# Initialize AppData and migrate if necessary.
|
9
9
|
AppData.update
|
10
10
|
|
11
|
-
# Initialize Commands.
|
12
|
-
Command.load_commands
|
13
|
-
|
14
11
|
# Run command, consuming its name from the list of arguments.
|
15
12
|
command = Command.execute(ARGV.shift, ARGV)
|
16
13
|
rescue UsageError => e
|
data/lib/mgit/command.rb
CHANGED
data/lib/mgit/commands/add.rb
CHANGED
@@ -6,9 +6,7 @@ module MGit
|
|
6
6
|
raise CommandUsageError.new('First argument must be a path to a git repository.', self) unless is_git_dir?(path)
|
7
7
|
raise CommandUsageError.new('Sorry, mgit can not handle bare repositories.', self) if is_bare?(path)
|
8
8
|
|
9
|
-
|
10
|
-
# https://github.com/JEG2/highline/issues/69
|
11
|
-
name = (args.size == 2) ? args[1] : (ask('Name of the repository? ') { |q| q.default = File.basename(path) }).to_s
|
9
|
+
name = (args.size == 2) ? args[1] : File.basename(path)
|
12
10
|
raise CommandUsageError.new("Repository named #{name} already exists with different path.", self) unless is_new_or_same?(name, path)
|
13
11
|
|
14
12
|
Registry.add(name, path)
|
@@ -36,11 +34,11 @@ module MGit
|
|
36
34
|
end
|
37
35
|
|
38
36
|
def is_git_dir?(path)
|
39
|
-
|
37
|
+
System::git('status', :chdir => path) !~ /fatal: Not a git repository/
|
40
38
|
end
|
41
39
|
|
42
40
|
def is_bare?(path)
|
43
|
-
|
41
|
+
System::git('status', :chdir => path) =~ /fatal: This operation must be run in a work tree/
|
44
42
|
end
|
45
43
|
end
|
46
44
|
end
|
data/lib/mgit/commands/clone.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
module MGit
|
2
2
|
class CloneCommand < Command
|
3
3
|
def execute(args)
|
4
|
-
log =
|
5
|
-
|
6
|
-
|
4
|
+
log = System::git("clone #{args.join(' ')}", { :raise => true, :print_stderr => true }).stdout
|
5
|
+
|
7
6
|
m = /Cloning into '(.*)'/.match(log.split("\n").first)
|
8
7
|
Command.execute('add', [m[1]])
|
9
8
|
end
|
data/lib/mgit/commands/config.rb
CHANGED
@@ -1,16 +1,30 @@
|
|
1
1
|
module MGit
|
2
2
|
class ConfigCommand < Command
|
3
3
|
def execute(args)
|
4
|
-
|
5
|
-
|
4
|
+
if args.size == 0
|
5
|
+
t = []
|
6
|
+
Configuration.each { |k, v| t << [k.to_s, v] }
|
7
|
+
ptable t
|
8
|
+
else
|
9
|
+
key = args[0]
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
|
11
|
+
if args.size == 1
|
12
|
+
psystem Configuration.send(key.to_sym).to_s
|
13
|
+
else
|
14
|
+
key = args[0]
|
15
|
+
value = args[1]
|
16
|
+
|
17
|
+
begin
|
18
|
+
Configuration.set(key, value)
|
19
|
+
rescue ConfigurationError => e
|
20
|
+
raise CommandUsageError.new(e.to_s, self)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
10
24
|
end
|
11
25
|
|
12
26
|
def arity
|
13
|
-
[
|
27
|
+
[0, 2]
|
14
28
|
end
|
15
29
|
|
16
30
|
def usage
|
data/lib/mgit/commands/fetch.rb
CHANGED
@@ -4,11 +4,9 @@ module MGit
|
|
4
4
|
class FetchCommand < Command
|
5
5
|
def execute(args)
|
6
6
|
thread_class = Configuration.threads ? Thread : NullThread
|
7
|
-
|
8
|
-
Registry.
|
9
|
-
|
10
|
-
fetch(repo)
|
11
|
-
end
|
7
|
+
|
8
|
+
threads = Registry.collect do |repo|
|
9
|
+
thread_class.new { fetch(repo) }
|
12
10
|
end
|
13
11
|
|
14
12
|
threads.each { |t| t.join }
|
@@ -31,16 +29,15 @@ module MGit
|
|
31
29
|
private
|
32
30
|
|
33
31
|
def fetch(repo)
|
34
|
-
|
32
|
+
sc = System::git('remote', :chdir => repo.path)
|
35
33
|
|
36
|
-
if
|
34
|
+
if !sc.success?
|
37
35
|
perror "Failed to read remotes for repository #{repo.name}! Abort."
|
38
|
-
|
36
|
+
return
|
39
37
|
end
|
40
38
|
|
41
|
-
|
42
|
-
|
43
|
-
if st.exitstatus == 0
|
39
|
+
sc.stdout.strip.split.each do |remote|
|
40
|
+
if System::git("fetch #{remote}", :chdir => repo.path).success?
|
44
41
|
pinfo "Fetched #{remote} in repository #{repo.name}."
|
45
42
|
else
|
46
43
|
perror "Failed to fetch #{remote} in repository #{repo.name}! Abort."
|
@@ -2,26 +2,15 @@ module MGit
|
|
2
2
|
class FFMergeCommand < Command
|
3
3
|
def execute(args)
|
4
4
|
Registry.chdir_each do |repo|
|
5
|
-
|
6
|
-
|
7
|
-
!repo.unmerged_commits(branch, upstream).empty?
|
8
|
-
end.map { |b, u| b }
|
9
|
-
|
10
|
-
next if bs.empty?
|
5
|
+
branches = mergable_branches(repo)
|
6
|
+
next if branches.empty?
|
11
7
|
|
12
8
|
if repo.dirty?
|
13
9
|
pwarn "Skipping repository #{repo.name} since it's dirty."
|
14
10
|
next
|
15
|
-
end
|
16
|
-
|
17
|
-
pinfo "Fast-forward merging branches in repository #{repo.name}..."
|
18
|
-
|
19
|
-
cb = repo.current_branch
|
20
|
-
bs.each do |b|
|
21
|
-
`git checkout -q #{b}`
|
22
|
-
`git merge --ff-only @{u}`
|
23
11
|
end
|
24
|
-
|
12
|
+
|
13
|
+
merge_branches(repo, branches)
|
25
14
|
end
|
26
15
|
end
|
27
16
|
|
@@ -38,5 +27,33 @@ module MGit
|
|
38
27
|
end
|
39
28
|
|
40
29
|
register_command :ffmerge
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def mergable_branches(repo)
|
34
|
+
repo.remote_tracking_branches.select do |branch, upstream|
|
35
|
+
!repo.unmerged_commits(branch, upstream).empty?
|
36
|
+
end.map { |b, u| b }
|
37
|
+
end
|
38
|
+
|
39
|
+
def merge_branches(repo, branches)
|
40
|
+
pinfo "Fast-forward merging branches in repository #{repo.name}..."
|
41
|
+
|
42
|
+
cb = repo.current_branch
|
43
|
+
|
44
|
+
begin
|
45
|
+
branches.each { |b| merge_branch(b) }
|
46
|
+
rescue GitError
|
47
|
+
perror "Failed to merge a branch in repository #{repo.name}."
|
48
|
+
pwarn "Please visit this repository and check that everything's alright. Trying to set back to original working branch."
|
49
|
+
ensure
|
50
|
+
System::git("checkout -q #{cb}", :print_stderr => true)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def merge_branch(branch)
|
55
|
+
System::git("checkout -q #{branch}", { :raise => true, :print_stderr => true })
|
56
|
+
System::git("merge --ff-only @{u}", { :raise => true, :print_stderr => true })
|
57
|
+
end
|
41
58
|
end
|
42
59
|
end
|
@@ -3,9 +3,12 @@ module MGit
|
|
3
3
|
def execute(args)
|
4
4
|
command = args.join(' ')
|
5
5
|
|
6
|
-
Registry.
|
6
|
+
Registry.each do |repo|
|
7
7
|
pinfo "Executing command in repository #{repo.name}..."
|
8
|
-
|
8
|
+
|
9
|
+
sc = System::run(command, { :chdir => repo.path, :print_stdout => true, :print_stderr => true })
|
10
|
+
|
11
|
+
if !sc.success? && !agree("Executing command '#{command}' in repository '#{repo.name}' failed. Would you like to continue anyway?".red)
|
9
12
|
break
|
10
13
|
end
|
11
14
|
end
|
data/lib/mgit/commands/grep.rb
CHANGED
@@ -3,10 +3,9 @@ module MGit
|
|
3
3
|
def execute(args)
|
4
4
|
ptrn = args[0]
|
5
5
|
|
6
|
-
Registry.
|
6
|
+
Registry.each do |repo|
|
7
7
|
pinfo "Looking for pattern '#{ptrn}' in repository #{repo.name}..."
|
8
|
-
|
9
|
-
puts
|
8
|
+
System::git("grep #{ptrn}", { :chdir => repo.path, :print_stdout => true })
|
10
9
|
end
|
11
10
|
end
|
12
11
|
|
data/lib/mgit/commands/head.rb
CHANGED
data/lib/mgit/commands/help.rb
CHANGED
@@ -3,10 +3,11 @@ module MGit
|
|
3
3
|
def execute(args)
|
4
4
|
if args.size == 0
|
5
5
|
pinfo "M[eta]Git - manage multiple git repositories at the same time"
|
6
|
-
|
6
|
+
pinfo ''
|
7
7
|
pinfo "Usage:"
|
8
8
|
Command.instance_each do |cmd|
|
9
|
-
pinfo "mgit #{cmd.usage}
|
9
|
+
pinfo "mgit #{cmd.usage}"
|
10
|
+
pinfo "\t- #{cmd.description}"
|
10
11
|
end
|
11
12
|
else
|
12
13
|
pinfo Command.create(args[0]).help
|
data/lib/mgit/commands/show.rb
CHANGED
@@ -40,13 +40,11 @@ module MGit
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def has_commit?
|
43
|
-
!(
|
43
|
+
!(System::git("rev-parse --quiet --verify #{@commit}").stdout.empty?)
|
44
44
|
end
|
45
45
|
|
46
46
|
def show_commit(repo)
|
47
|
-
repo.
|
48
|
-
system("git show #{@commit}")
|
49
|
-
end
|
47
|
+
System::git("show #{@commit}", { :chdir => repo.path, :print_stdout => true } )
|
50
48
|
end
|
51
49
|
|
52
50
|
def show_menu
|
data/lib/mgit/commands/tags.rb
CHANGED
@@ -25,13 +25,12 @@ module MGit
|
|
25
25
|
private
|
26
26
|
|
27
27
|
def latest_tag(path)
|
28
|
-
|
29
|
-
|
28
|
+
sc = System::git('describe --tags --abbrev=0 master', :chdir => path)
|
29
|
+
sc =~ /fatal:/ ? 'none' : sc.stdout.strip
|
30
30
|
end
|
31
31
|
|
32
32
|
def latest_tag_time(path, tag)
|
33
|
-
|
34
|
-
Time.at(sout.strip.to_i).strftime('%Y-%m-%d')
|
33
|
+
Time.at(System::git("log -n 1 --format='%at' #{tag}", :chdir => path).stdout.strip.to_i).strftime('%Y-%m-%d')
|
35
34
|
end
|
36
35
|
|
37
36
|
def print_latest_tag(repo)
|
data/lib/mgit/configuration.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module MGit
|
2
2
|
module Configuration
|
3
|
+
extend Enumerable
|
4
|
+
|
3
5
|
KEYS = {
|
4
6
|
:threads => {
|
5
7
|
:default => true,
|
@@ -9,6 +11,11 @@ module MGit
|
|
9
11
|
:plugindir => {
|
10
12
|
:default => File.join(AppData::AppDataVersion.latest.send(:config_dir), 'plugins'),
|
11
13
|
:description => 'directory from where plugin commands are loaded'
|
14
|
+
},
|
15
|
+
|
16
|
+
:colors => {
|
17
|
+
:default => true,
|
18
|
+
:description => 'set to false to disable all colored output'
|
12
19
|
}
|
13
20
|
}
|
14
21
|
|
@@ -28,19 +35,39 @@ module MGit
|
|
28
35
|
|
29
36
|
def self.set(key, value)
|
30
37
|
case key
|
31
|
-
when 'threads'
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
if ['true', 'on'].include?(value)
|
37
|
-
self.threads = true
|
38
|
-
else
|
39
|
-
self.threads = false
|
38
|
+
when 'threads', 'colors'
|
39
|
+
set_boolean(key, value)
|
40
|
+
when 'plugindir'
|
41
|
+
if !File.directory?(value)
|
42
|
+
raise ConfigurationError.new("Illegal value for key plugindir. Has to be a directory.")
|
40
43
|
end
|
44
|
+
self.plugindir = File.expand_path(value)
|
41
45
|
else
|
42
46
|
raise ConfigurationError.new("Unknown key: #{key}.")
|
43
47
|
end
|
44
48
|
end
|
49
|
+
|
50
|
+
def self.each
|
51
|
+
KEYS.each do |key|
|
52
|
+
yield [key.first.to_s, self.send(key.first).to_s]
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.method_missing(meth, *args, &block)
|
57
|
+
raise ConfigurationError.new("Unknown key: #{key}")
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def self.set_boolean(key, value)
|
63
|
+
unless ['true', 'false', 'on', 'off'].include?(value)
|
64
|
+
raise ConfigurationError.new("Illegal value for key #{key}.")
|
65
|
+
end
|
66
|
+
if ['true', 'on'].include?(value)
|
67
|
+
self.send("#{key}=", true)
|
68
|
+
else
|
69
|
+
self.send("#{key}=", false)
|
70
|
+
end
|
71
|
+
end
|
45
72
|
end
|
46
73
|
end
|
data/lib/mgit/exceptions.rb
CHANGED
@@ -1,7 +1,20 @@
|
|
1
1
|
module MGit
|
2
2
|
class ImplementationError < StandardError; end
|
3
3
|
|
4
|
-
class
|
4
|
+
class SystemCommandError < StandardError
|
5
|
+
attr_reader :cmd, :error
|
6
|
+
|
7
|
+
def initialize(cmd, error)
|
8
|
+
@cmd = cmd
|
9
|
+
@error = error
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_s
|
13
|
+
"Error: #{@error}\nCommand was: #{@cmd}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class GitError < SystemCommandError
|
5
18
|
def initialize(error)
|
6
19
|
@error = error
|
7
20
|
end
|
data/lib/mgit/output.rb
CHANGED
@@ -1,23 +1,35 @@
|
|
1
1
|
module MGit
|
2
2
|
module Output
|
3
|
+
def psystem(s)
|
4
|
+
print_to_screen s
|
5
|
+
end
|
6
|
+
|
3
7
|
def pinfo(s)
|
4
|
-
|
8
|
+
print_to_screen s.green
|
5
9
|
end
|
6
10
|
|
7
11
|
def pwarn(s)
|
8
|
-
|
12
|
+
print_to_screen s.yellow
|
9
13
|
end
|
10
14
|
|
11
15
|
def perror(s)
|
12
|
-
|
16
|
+
print_to_screen s.red
|
13
17
|
end
|
14
18
|
|
15
19
|
def ptable(table, options = {})
|
16
|
-
|
20
|
+
print_to_screen TableOutputter.new(table, options).to_s
|
17
21
|
end
|
18
22
|
|
19
23
|
private
|
20
24
|
|
25
|
+
def print_to_screen(s)
|
26
|
+
if Configuration.colors
|
27
|
+
puts s
|
28
|
+
else
|
29
|
+
puts s.uncolorize
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
21
33
|
class TableOutputter
|
22
34
|
attr_reader :table, :options
|
23
35
|
|
data/lib/mgit/registry.rb
CHANGED
data/lib/mgit/repository.rb
CHANGED
@@ -21,25 +21,26 @@ module MGit
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def current_branch
|
24
|
-
in_repo {
|
25
|
-
|
26
|
-
|
24
|
+
in_repo {
|
25
|
+
sc = System::git('rev-parse --abbrev-ref HEAD')
|
26
|
+
sc.success? ? sc.stdout.strip : 'HEAD'
|
27
27
|
}
|
28
28
|
end
|
29
29
|
|
30
30
|
def current_head
|
31
|
-
in_repo {
|
31
|
+
in_repo { System::git('rev-parse --verify --short HEAD').stdout.strip }
|
32
32
|
end
|
33
33
|
|
34
34
|
def remote_tracking_branches(upstream_exists_only = true)
|
35
35
|
rb = remote_branches
|
36
36
|
|
37
37
|
a = in_repo do
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
38
|
+
System::git("for-each-ref --format='%(refname:short) %(upstream:short)' refs/heads")
|
39
|
+
.stdout
|
40
|
+
.split("\n")
|
41
|
+
.map { |b| b.split(' ') }
|
42
|
+
.reject { |b| b.size != 2 }
|
43
|
+
.select { |b| !upstream_exists_only || rb.include?(b[1]) }
|
43
44
|
end
|
44
45
|
|
45
46
|
Hash[a]
|
@@ -47,16 +48,17 @@ module MGit
|
|
47
48
|
|
48
49
|
def remote_branches
|
49
50
|
in_repo do
|
50
|
-
|
51
|
+
System::git('branch -r').stdout.split("\n").map { |a| a.split(' ')[0] }
|
51
52
|
end
|
52
53
|
end
|
53
54
|
|
54
55
|
def unmerged_commits(branch, upstream)
|
55
56
|
in_repo do
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
map
|
57
|
+
System::git("log --pretty=format:'%h#%an#%s' --reverse --relative-date #{branch}..#{upstream}")
|
58
|
+
.stdout
|
59
|
+
.split("\n")
|
60
|
+
.map { |line| line.split('#') }
|
61
|
+
.map do |words|
|
60
62
|
{
|
61
63
|
:commit => words[0],
|
62
64
|
:author => words[1],
|
@@ -116,7 +118,7 @@ module MGit
|
|
116
118
|
private
|
117
119
|
|
118
120
|
def status
|
119
|
-
@status ||= in_repo {
|
121
|
+
@status ||= in_repo { System::git('status --short --branch --ignore-submodules').stdout.split("\n") }
|
120
122
|
end
|
121
123
|
|
122
124
|
def status_lines
|
data/lib/mgit/system.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'open3'
|
2
|
+
|
3
|
+
module MGit
|
4
|
+
module System
|
5
|
+
class SystemCommand
|
6
|
+
include Output
|
7
|
+
|
8
|
+
attr_reader :stdout, :stderr
|
9
|
+
|
10
|
+
def initialize(cmd, opts)
|
11
|
+
opts, popen_opts = extract_options(opts)
|
12
|
+
@stdout, @stderr, @st = Open3.capture3(cmd, popen_opts)
|
13
|
+
|
14
|
+
psystem(stdout.strip) if opts[:print_stdout]
|
15
|
+
|
16
|
+
if !success?
|
17
|
+
psystem(stderr.strip) if opts[:print_stderr]
|
18
|
+
raise SystemCommandError.new(cmd, opts[:error]) if opts[:raise]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def success?
|
23
|
+
@st.exitstatus == 0
|
24
|
+
end
|
25
|
+
|
26
|
+
def =~(re)
|
27
|
+
(@stdout =~ re) || (@stderr =~ re)
|
28
|
+
end
|
29
|
+
|
30
|
+
def default_options
|
31
|
+
{
|
32
|
+
:print_stdout => false,
|
33
|
+
:print_stderr => false,
|
34
|
+
:raise => false,
|
35
|
+
:error => 'Command failed.',
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
def extract_options(opts)
|
40
|
+
popen_opts = opts.dup
|
41
|
+
|
42
|
+
opts = Hash[
|
43
|
+
default_options.map do |k, v|
|
44
|
+
[k, popen_opts.has_key?(k) ? popen_opts.delete(k) : v]
|
45
|
+
end
|
46
|
+
]
|
47
|
+
|
48
|
+
[opts, popen_opts]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
class GitCommand < SystemCommand
|
53
|
+
def initialize(cmd, opts)
|
54
|
+
begin
|
55
|
+
super("git #{cmd}", opts)
|
56
|
+
rescue SystemCommandError => e
|
57
|
+
raise GitError.new(e.error)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.git(cmd, opts = {})
|
63
|
+
GitCommand.new(cmd, opts)
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.run(cmd, opts = {})
|
67
|
+
SystemCommand.new(cmd, opts)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/mgit/version.rb
CHANGED
data/lib/mgit.rb
CHANGED
metadata
CHANGED
@@ -1,69 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mgit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- FlavourSys Technology GmbH
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
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
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: highline
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: xdg
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
description: M[eta]Git let's you manage multiple git repositories simultaneously
|
@@ -73,34 +73,35 @@ executables:
|
|
73
73
|
extensions: []
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
|
+
- bin/mgit
|
76
77
|
- lib/mgit.rb
|
77
|
-
- lib/mgit/output.rb
|
78
|
-
- lib/mgit/repository.rb
|
79
|
-
- lib/mgit/version.rb
|
80
78
|
- lib/mgit/appdata.rb
|
81
|
-
- lib/mgit/
|
82
|
-
- lib/mgit/
|
83
|
-
- lib/mgit/
|
84
|
-
- lib/mgit/commands/
|
85
|
-
- lib/mgit/commands/grep.rb
|
79
|
+
- lib/mgit/cli.rb
|
80
|
+
- lib/mgit/command.rb
|
81
|
+
- lib/mgit/commands/add.rb
|
82
|
+
- lib/mgit/commands/clone.rb
|
86
83
|
- lib/mgit/commands/config.rb
|
87
|
-
- lib/mgit/commands/remove_all.rb
|
88
|
-
- lib/mgit/commands/version.rb
|
89
84
|
- lib/mgit/commands/fetch.rb
|
85
|
+
- lib/mgit/commands/ffmerge.rb
|
86
|
+
- lib/mgit/commands/foreach.rb
|
87
|
+
- lib/mgit/commands/grep.rb
|
90
88
|
- lib/mgit/commands/head.rb
|
91
|
-
- lib/mgit/commands/status.rb
|
92
|
-
- lib/mgit/commands/remove.rb
|
93
89
|
- lib/mgit/commands/help.rb
|
94
|
-
- lib/mgit/commands/
|
95
|
-
- lib/mgit/commands/tags.rb
|
96
|
-
- lib/mgit/commands/add.rb
|
90
|
+
- lib/mgit/commands/list.rb
|
97
91
|
- lib/mgit/commands/log.rb
|
92
|
+
- lib/mgit/commands/remove.rb
|
93
|
+
- lib/mgit/commands/remove_all.rb
|
98
94
|
- lib/mgit/commands/show.rb
|
99
|
-
- lib/mgit/commands/
|
100
|
-
- lib/mgit/commands/
|
101
|
-
- lib/mgit/
|
102
|
-
- lib/mgit/
|
103
|
-
-
|
95
|
+
- lib/mgit/commands/status.rb
|
96
|
+
- lib/mgit/commands/tags.rb
|
97
|
+
- lib/mgit/commands/version.rb
|
98
|
+
- lib/mgit/configuration.rb
|
99
|
+
- lib/mgit/exceptions.rb
|
100
|
+
- lib/mgit/output.rb
|
101
|
+
- lib/mgit/registry.rb
|
102
|
+
- lib/mgit/repository.rb
|
103
|
+
- lib/mgit/system.rb
|
104
|
+
- lib/mgit/version.rb
|
104
105
|
homepage: http://github.com/flavoursys/mgit
|
105
106
|
licenses:
|
106
107
|
- MIT
|
@@ -111,17 +112,17 @@ require_paths:
|
|
111
112
|
- lib
|
112
113
|
required_ruby_version: !ruby/object:Gem::Requirement
|
113
114
|
requirements:
|
114
|
-
- -
|
115
|
+
- - ">="
|
115
116
|
- !ruby/object:Gem::Version
|
116
117
|
version: '0'
|
117
118
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
119
|
requirements:
|
119
|
-
- -
|
120
|
+
- - ">="
|
120
121
|
- !ruby/object:Gem::Version
|
121
122
|
version: '0'
|
122
123
|
requirements: []
|
123
124
|
rubyforge_project:
|
124
|
-
rubygems_version: 2.
|
125
|
+
rubygems_version: 2.2.2
|
125
126
|
signing_key:
|
126
127
|
specification_version: 4
|
127
128
|
summary: MGit meta repository tool
|