fossgit 1.0.2 → 1.1.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.
Files changed (7) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +5 -5
  3. data/README.md +76 -23
  4. data/bin/fossgit +45 -73
  5. data/lib/fossgit.rb +53 -38
  6. data/lib/fossgit/cli.rb +163 -0
  7. metadata +13 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b587f5714e832075d9bfa3935c3814e242267712
4
- data.tar.gz: 0e0dd8b1f92c433492dd35873f254494b727de1f
3
+ metadata.gz: 7eca5110eb895f6f749b936257f8afdc5319cfae
4
+ data.tar.gz: 42265b429b00832cb61896d2479a7bc1ac352ff9
5
5
  SHA512:
6
- metadata.gz: fd6d9a5534f350c48b55ed9c754e031e058ff7bdba4401417999f6cac2df4394e7f4bc09243c9eabd2b002b28d1e8e0cb690d323083dabe36740dac45f629e48
7
- data.tar.gz: 9edbe6e60d9d38398e4c196cce02d191afe45e6ab8cbd665b297a1758fd7cec5837fc557ce753baefb6564253645871bd429db69c40579bdaabb864272748ff6
6
+ metadata.gz: b020ff7cde1febd18476afe0f13fd84b1b910e80d717d40173a57e2be74a81ac4975e8293c64c146a1bd75bcdcef39e94dc58f872e6ae99d99aa06f5b484f45a
7
+ data.tar.gz: 203a1b2366d7ac83e3d476a7af9e06679b691b4b75c7d9d208a66e9ec1a37f244254dfdbbc358a7a760514e89451cd1a059d625169be43d457a045bbde28486b
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- FossGit: Copyright 2016 Chad Perrin, released under the terms of version 0.4 of
1
+ FossGit: Copyright 2016 Chad Perrin, released under the terms of version 0.5 of
2
2
  the Copyfree Open Innovation License.
3
3
 
4
4
  ## Terms and Conditions
@@ -17,10 +17,10 @@ and/or otherwise deal in the licensed material without restriction.
17
17
  license to reproduce, modify, distribute, publish, sell, use, and/or otherwise
18
18
  deal in the licensed material without restriction, for any and all patents:
19
19
 
20
- a. Held presently or in the future by each such holder of copyright or
21
- other legal privilege, author or assembler, or contributor, necessarily
22
- infringed by the contributions alone or by combination with the work, of
23
- that privilege holder, author or assembler, or contributor.
20
+ a. Held by each such holder of copyright or other legal privilege, author
21
+ or assembler, or contributor, necessarily infringed by the contributions
22
+ alone or by combination with the work, of that privilege holder, author or
23
+ assembler, or contributor.
24
24
 
25
25
  b. Necessarily infringed by the work at the time that holder of copyright
26
26
  or other privilege, author or assembler, or contributor made any
data/README.md CHANGED
@@ -12,21 +12,86 @@ Install the [Ruby Gem][gem]:
12
12
  If, for some reason, that is not an available option for you or you wish to do
13
13
  things the hard way, there is another installation method:
14
14
 
15
- 1. Clone it from the [Fossil repository][frepo] or the [GitHub mirror][grepo].
15
+ 1. Clone it from the [Fossil repository][frepo], the [GitHub][ghrepo] mirror,
16
+ or the [GitLab][glrepo] mirror.
16
17
 
17
- 2. Copy the `fossgit` file to a directory in your execution path, create a
18
- symlink or hardlink to the repository's `fossgit` file in a directory in
19
- your execution path, add its location in this repository to your execution
20
- path, or execute it by entering the explicit path to the `fossgit` file at a
21
- shell prompt.
18
+ 2. Build a gem, using this command:
19
+
20
+ gem build fossgit.gemspec
21
+
22
+ 3. Install the gem, using this command, using the whole filename of the gem
23
+ filename, substituting the actual version number for `<version`:
24
+
25
+ gem install fossgit-<version>
26
+
27
+ If that still does not suit your needs, you're on your own for now. I'd be
28
+ happy to accept suggestions for additional installation methods to describe.
22
29
 
23
30
  ## Usage
24
31
 
32
+ After installation, you can use this command to see documentation for command
33
+ line usage and (optional) configuration:
34
+
35
+ $ fossgit -h
36
+
37
+ ### Basic Command Line
38
+
25
39
  With an open checkout of your Fossil repository:
26
40
 
27
41
  $ cd /path/to/open/fossil/checkout
28
42
  $ fossgit /path/to/git/repository
29
43
 
44
+ ### Config
45
+
46
+ The following is just a basic introduction to FossGit configuration. See full
47
+ config documentation via the command line tool's `-h` option.
48
+
49
+ By placing a config file in the directory that will serve as your working
50
+ directory while running `fossgit` (typically the root of your Fossil repository
51
+ checkout directory tree), you can do away with the need to specify the path to
52
+ the local Git repository mirror. Simply create a file there called `.fossgit`
53
+ containing the following:
54
+
55
+ gitrepo: /path/to/gitdir/reponame
56
+
57
+ You can then run the command without arguments:
58
+
59
+ $ cd /path/to/open/fossil/checkout
60
+ $ fossgit
61
+
62
+ You can also place a `.fossgit` config file in your home directory, in which
63
+ case you may wish to specify the path to a directory in which you keep all your
64
+ Git repository mirrors and let `fossgit` infer your repository name from the
65
+ project-name setting in your Fossil repository:
66
+
67
+ gitpath: /path/to/gitdir
68
+
69
+ Once again, this allows you to run the command without arguments, but in this
70
+ case you should ensure the "project name" setting has been configured in your
71
+ Fossil repository, because it will default to using that to find your local Git
72
+ mirror. If you want to specify a different Git repository name, using the
73
+ `gitrepo` setting in a `.fossgit` file within the checkout of your Fossil
74
+ repository as described above might be a better option.
75
+
76
+ You can check whether your project name has been configured by running this
77
+ command from within an open checkout:
78
+
79
+ $ fossil info
80
+
81
+ If the `project-name` line says `<unnamed>`, the project name is unconfigured.
82
+ You can cofigure it yourself; open the web UI for the repository (e.g. run
83
+ `fossil serve` from within an open checkout and open `localhost:8080` in your
84
+ browser), navigate to `Admin > Configuration`, fill in the Project Name field,
85
+ and click the button to apply your changes.
86
+
87
+ If you do both, the most-specific option (gitrepo) will be chosen as the target
88
+ Git repository, which is probably a good idea if, for a specific project, you
89
+ have not configured the Fossil repository's project-name setting, or if you
90
+ want to default to updating a mirror with a different name than the Fossil
91
+ project-name. Specifying a repository path at the command line will cause
92
+ `fossgit` to ignore both, and just use the command line argument as the target
93
+ Git repository path.
94
+
30
95
  ## Dependencies
31
96
 
32
97
  * Fossil SCM
@@ -40,27 +105,15 @@ With an open checkout of your Fossil repository:
40
105
  In order from most preferred to least preferred:
41
106
 
42
107
  * Add a ticket in the Fossil repository.
43
- * Add a ticket in the GitHub repository (then I'll copy it to Fossil).
108
+ * Add a ticket in the GitHub or GitLab repository (and I'll copy it to Fossil).
44
109
 
45
110
  ## Roadmap
46
111
 
47
- * Add tests, maybe.
112
+ * Add more tests, maybe.
113
+ * Change defaults for v2.0, perhaps.
48
114
  * Incorporate this functionality into FossRec, a more comprehensive tool.
49
115
 
50
- ## Development
51
-
52
- The discerning programmer may look over FossGit in its current form and realize
53
- it is neither object-oriented nor functional in its design. It is, in fact, a
54
- pretty straightforward procedural program, written in Ruby (an odd language to
55
- use for procedural programming, perhaps). The reason for this is simple: it is
56
- in essence a glorified shell script. There are plans to make it part of a
57
- larger set of libraries and utilities (see the Roadmap), and it will need to
58
- undergo a fair bit of redesign as part of that; I expect it to be largely
59
- unrecognizable by then.
60
-
61
- Much of this work was done on Christmas weekend 2016. That may or may not be
62
- significant.
63
-
64
116
  [gem]: https://rubygems.org/gems/fossgit
65
117
  [frepo]: https://fossrec.com/u/apotheon/fossgit
66
- [grepo]: https://github.com/apotheon/fossgit
118
+ [ghrepo]: https://github.com/apotheon/fossgit
119
+ [glrepo]: https://gitlab.com/apotheon/fossgit
@@ -1,97 +1,69 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'fossgit'
3
+ require 'fossgit/cli'
4
+ require 'yaml'
3
5
 
4
- @fg = FossGit.new Dir.pwd
5
-
6
- def mirror_command
7
- [fossil_command, sed_command, git_command].join '|'
8
- end
9
-
10
- def sed_command
11
- %q{sed 's/^\(committer \+\)\([^ ]\+@[^ ]\+\)\( *<\)\(\w\+\)\(>.*\)$/\1\4\3\2\5/'}
12
- end
13
-
14
- def fossil_command
15
- cmd = ['fossil export --git']
16
-
17
- cmd << "--import-marks #{fossil_marks}" if update_export?
18
- cmd << "--export-marks #{fossil_marks}"
19
- cmd << @fg.fossil_repository
20
-
21
- cmd.join ' '
22
- end
23
-
24
- def git_command
25
- cmd = ['git fast-import']
26
-
27
- cmd << "--import-marks=#{git_marks}" if update_export?
28
- cmd << "--export-marks=#{git_marks}"
29
-
30
- cmd.join ' '
31
- end
32
-
33
- def push_command
34
- '; git checkout trunk; git push origin trunk'
6
+ def projectname
7
+ fossil_info = YAML.load `fossil info | head -n 1`
8
+ name = fossil_info ? fossil_info['project-name'] : fossil_info
9
+ name if not name.eql? '<unnamed>'
35
10
  end
36
11
 
37
- def update_export?
38
- File.exist? git_marks and File.exist? fossil_marks
39
- end
12
+ @cli = CLI.new ARGV, File.basename($0)
13
+ @fg = FossGit.new (@cli.get_option('-c') or Dir.pwd)
40
14
 
41
- def fossil_marks
42
- fossil_file 'fossil.marks'
43
- end
15
+ Dir.chdir @fg.checkout_path
44
16
 
45
- def git_marks
46
- fossil_file 'git.marks'
17
+ if @cli.config['gitdir'] and projectname and not @cli.config['gitrepo']
18
+ @cli.config['gitrepo'] = File.join(@cli.config['gitdir'], projectname)
47
19
  end
48
20
 
49
- def fossil_file filename
50
- File.join fossil_path, filename
51
- end
52
-
53
- def fossil_path
54
- get_option '-c' or Dir.pwd
55
- end
56
-
57
- def get_option opt, default=nil
58
- ARGV.index(opt).tap do |val|
59
- return val ? (ARGV.delete_at val and ARGV.delete_at val) : default
60
- end
61
- end
62
-
63
- def option_switch? long_name
64
- ARGV.delete "-#{long_name[0]}" or ARGV.delete "--#{long_name}"
65
- end
66
-
67
- name = File.basename $0
68
-
69
- if option_switch? 'help'
70
- puts FossGit.help_text name
21
+ if @cli.option_switch? 'help'
22
+ puts @cli.help_text
71
23
  exit
72
- elsif option_switch? 'version'
73
- puts [name, FossGit.version].join ' '
74
- elsif option_switch? 'text-export'
75
- puts `#{fossil_command}|#{sed_command}`
24
+ elsif @cli.option_switch? 'version'
25
+ puts [@cli.name, FossGit.version].join ' '
26
+ elsif @cli.option_switch? 'text-export'
27
+ system @fg.text_export_command
76
28
  exit
77
29
  else
78
- command_line = mirror_command
79
- command_line << push_command unless option_switch? 'local'
30
+ opts = Hash.new
31
+ opts[:local] = @cli.option_switch? 'local'
32
+
33
+ @cli.remotes = nil if (opts[:all] = @cli.remotes.eql? 'all')
34
+
35
+ @cli.option_switch?('all').tap {|v| opts[:all] ||= v }
36
+
37
+ remotes = (@cli.get_option '-r') or @cli.remotes
80
38
 
81
- git_path = ARGV.shift
39
+ gitrepo = (@cli.args.shift or @cli.config['gitrepo'])
82
40
 
83
- if git_path.to_s.empty?
41
+ if gitrepo.to_s.empty?
84
42
  STDERR.puts 'Error! No Git path provided.'
85
43
  exit!
86
- elsif Dir.exist? git_path
87
- Dir.chdir git_path
44
+ elsif Dir.exist? gitrepo
45
+ Dir.chdir gitrepo
88
46
  else
89
- STDERR.puts %Q{Error! Invalid Git path "#{git_path}" provided.}
47
+ STDERR.puts %Q{Error! Invalid Git path "#{gitrepo}" provided.}
90
48
  exit!
91
49
  end
92
50
 
51
+ if remotes
52
+ remotes = remotes.split ','
53
+ else
54
+ if opts[:all]
55
+ remotes = @fg.git_remotes gitrepo
56
+ else
57
+ remotes = ['origin']
58
+ end
59
+ end
60
+
93
61
  if system 'git status'
94
- system command_line
62
+ if opts[:local]
63
+ system @fg.mirror_command
64
+ else
65
+ @fg.push_remote_list! remotes
66
+ end
95
67
  else
96
68
  STDERR.print %Q{Error! Invalid Git repository "#{Dir.pwd}" provided.}
97
69
  exit!
@@ -10,58 +10,71 @@ class FossGit
10
10
  end
11
11
 
12
12
  def self.version
13
- '1.0.2'
13
+ '1.1.0'
14
14
  end
15
15
 
16
- def self.help_text name='fossgit'
17
- help = <<-EOF
16
+ def fossil_marks
17
+ File.join checkout_path, 'fossil.marks'
18
+ end
18
19
 
19
- FossGit provides a simple tool for creating Git mirrors of Fossil
20
- repositories. To use it, you need:
21
-
22
- 1. both Fossil SCM and Git installed
23
- 2. a Fossil repository to mirror with an open checkout
24
- 3. a Git repository to use as a mirror
20
+ def git_marks
21
+ File.join checkout_path, 'git.marks'
22
+ end
25
23
 
26
- USAGE: #{name} -h
27
- #{name} [-c <CHECKOUT>] [-l] <GITREPO>
28
- #{name} -t
24
+ def fossil_command
25
+ cmd = ['fossil export --git']
29
26
 
30
- By default, when exporting to local Git repository GITREPO, #{name}
31
- attempts to push updates to a configured upstream Git repository. It
32
- harmlessly fails to push if no upstream repository is configured for
33
- the local Git repository.
27
+ cmd << "--import-marks #{fossil_marks}" if update_export?
28
+ cmd << "--export-marks #{fossil_marks}"
29
+ cmd << fossil_repository
34
30
 
35
- OPTIONS/ARGUMENTS:
31
+ cmd.join ' '
32
+ end
36
33
 
37
- -h Display this help text and exit, ignoring all other
38
- arguments.
34
+ def push_command gitremote
35
+ "; git checkout trunk; git push #{gitremote} trunk"
36
+ end
39
37
 
40
- -c CHECKOUT Specify the location of your Fossil repository's open
41
- checkout, CHECKOUT. This is optional; you may simply
42
- use this tool from within an open checkout of your
43
- Fossil repository instead.
38
+ def git_command
39
+ cmd = ['git fast-import']
44
40
 
45
- -l Perform local-only mirror operations, without trying
46
- to push Git updates to a remote repository. By
47
- default, #{name} tries to push to an upstream Git
48
- repository whenever it exports from Fossil to Git.
41
+ cmd << "--import-marks=#{git_marks}" if update_export?
42
+ cmd << "--export-marks=#{git_marks}"
49
43
 
50
- -t Dump export to STDOUT rather than sending it to Git.
51
- This overrides the `-l` option and GITREPO argument,
52
- if present.
44
+ cmd.join ' '
45
+ end
53
46
 
54
- GITREPO Specify the location of your local Git repository.
47
+ def sed_command
48
+ %q{sed 's/^\(committer \+\)\([^ ]\+@[^ ]\+\)\( *<\)\(\w\+\)\(>.*\)$/\1\4\3\2\5/'}
49
+ end
55
50
 
56
- EXAMPLES:
51
+ def mirror_command
52
+ [fossil_command, sed_command, git_command].join '|'
53
+ end
57
54
 
58
- $ fossgit -h
55
+ def push_mirror_command gitremote
56
+ mirror_command + push_command(gitremote)
57
+ end
59
58
 
60
- $ fossgit -c ~/fossil_checkouts/projectname ~/git/projectname
59
+ def push_remote_list! remote_list
60
+ remote_list.each do |gitremote|
61
+ puts "PUSH TO: #{gitremote}"
62
+ system push_mirror_command(gitremote)
63
+ end
64
+ end
61
65
 
62
- $ cd ~/fossil_checkouts/projectname && fossgit ~/git/projectname
66
+ def text_export_command
67
+ [fossil_command, sed_command].join '|'
68
+ end
63
69
 
64
- EOF
70
+ def update_export?
71
+ File.exist? git_marks and File.exist? fossil_marks
72
+ end
73
+
74
+ def git_remotes gitpath
75
+ Dir.chdir gitpath do
76
+ `git remote`.split "\n"
77
+ end
65
78
  end
66
79
 
67
80
  private
@@ -78,8 +91,10 @@ class FossGit
78
91
  def fossil_status
79
92
  Dir.chdir checkout_path
80
93
 
81
- if system 'fossil status'
82
- `fossil status`.split(/\n/)
94
+ stat = `fossil status`
95
+
96
+ if stat.size > 0
97
+ stat.split(/\n/)
83
98
  else
84
99
  raise ArgumentError, "#{checkout_path} is not a valid checkout path"
85
100
  end
@@ -0,0 +1,163 @@
1
+ require 'yaml'
2
+
3
+ class CLI
4
+ attr_accessor :args, :config, :name
5
+
6
+ def initialize args=[], cliname='fossgit', filename='.fossgit'
7
+ @args = args
8
+ @config = Hash.new
9
+ @name = cliname
10
+
11
+ @config_filename = filename
12
+ @home_config_file = File.join(Dir.home, @config_filename)
13
+
14
+ configure @config_filename
15
+ end
16
+
17
+ def configure file=@config_filename
18
+ load_home_config
19
+ load_local_config file
20
+ end
21
+
22
+ def load_home_config
23
+ if File.exist? @home_config_file
24
+ @config = YAML.load_file @home_config_file
25
+ end
26
+ end
27
+
28
+ def load_local_config file=@config_filename
29
+ if File.exist? file
30
+ YAML.load_file(file).tap do |local|
31
+ local.each_key {|k| @config[k] = local[k] }
32
+ end
33
+ end
34
+ end
35
+
36
+ def remotes
37
+ config['remotes']
38
+ end
39
+
40
+ def remotes= gitremotes
41
+ config['remotes'] = gitremotes
42
+ end
43
+
44
+ def help_text
45
+ help = <<-EOF
46
+
47
+ FossGit mirrors Fossil repositories to Git repositories. You need:
48
+
49
+ 1. both Fossil SCM and Git installed
50
+ 2. a Fossil repository with an open checkout to export
51
+ 3. a Git repository to use as a mirror
52
+
53
+ USAGE: #{name} [-h | -v | -t]
54
+ #{name} [-c <CHECKOUT>] [-a | -r REMOTE | -l] [GITREPO]
55
+
56
+ By default, when exporting to local Git repository GITREPO, #{name}
57
+ attempts to push updates to a configured upstream Git repository. It
58
+ should harmlessly fail to push if there is no upstream repository
59
+ configured for the local Git repository. If there is no GITREPO in
60
+ configuration (see CONFIG below), you must specify GITREPO when using
61
+ #{name} to mirror your Fossil repository.
62
+
63
+ OPTIONS/ARGUMENTS:
64
+
65
+ -h Display this help text and exit, ignoring all other
66
+ arguments.
67
+
68
+ -a Push to all configured remotes for the target Git
69
+ repository. Default behavior is to push only to the
70
+ configured "origin" remote.
71
+
72
+ -c CHECKOUT Specify the location of your Fossil repository's open
73
+ checkout, CHECKOUT. This is optional; you may simply
74
+ use this tool from within an open checkout of your
75
+ Fossil repository instead.
76
+
77
+ -l Perform local-only mirror operations, without trying
78
+ to push Git updates to a remote repository. By
79
+ default, #{name} tries to push to an upstream Git
80
+ repository whenever it exports from Fossil to Git.
81
+
82
+ -r Specify which of your Git mirror's configured remotes
83
+ you want to push. This overrides the -a switch. For
84
+ multiple remotes, use a comma-separated list with no
85
+ spaces between them.
86
+
87
+ -t Dump export to STDOUT as text rather than sending it
88
+ to Git. This overrides the `-l` switch and GITREPO
89
+ argument, if present.
90
+
91
+ -v Show FossGit version number.
92
+
93
+ GITREPO Specify the location of your local Git repository.
94
+ This is optional if there is a configuration file
95
+ that specifies it for you.
96
+
97
+ COMMAND EXAMPLES:
98
+
99
+ $ fossgit -h
100
+
101
+ $ fossgit -c ~/fossil_checkouts/projectname ~/git/projectname
102
+
103
+ $ cd ~/fossil_checkouts/projectname && fossgit ~/git/projectname
104
+
105
+ CONFIG:
106
+
107
+ A config file named ".fossgit" can be used to set #{name} defaults.
108
+
109
+ A universal config file can be placed in the home directory of the
110
+ user account that executes this command, in which case it will apply
111
+ every time that account executes #{name}. A config file can also be
112
+ placed in the root of an open Fossil repository, in which case it
113
+ will only apply when #{name} is used for that particular repository.
114
+ If both files exist, settings from both will be used, but where both
115
+ have the same setting the more specific config (in the project
116
+ directory) overrides the equivalent setting from the universal
117
+ config. This means a universal configuration can be used for the
118
+ most common case, but for specific projects that have different needs
119
+ you can place a config file the project repository.
120
+
121
+ These are the available configuration options:
122
+
123
+ * The "gitdir" setting can be used to specify a directory in which
124
+ Git repositories are kept. In this case, #{name} infers the Git
125
+ repository name from the "project-name" in "fossil info" output.
126
+
127
+ * The "gitrepo" setting can be used to specify the full path to a Git
128
+ repository, without letting #{name} try to infer the repository
129
+ name. This option overrides "gitdir" if both are set. It is
130
+ probably a bad idea to set "gitrepo" in a universal config. It is
131
+ intended to be set in a project-specific ".fossgit" file because
132
+ chaos may ensue if all Fossil repositories use the same "gitrepo".
133
+
134
+ * The "remotes" setting can be used to specify which of your Git
135
+ mirror's configured remotes you want to use when pushing from Git.
136
+ As with the -r command line option, you can list one remote or list
137
+ several as a comma-separated list with no spaces. The "remotes"
138
+ setting in a configuration file accepts the "all" value, equivalent
139
+ to the -a command line option.
140
+
141
+ CONFIG EXAMPLES:
142
+
143
+ gitdir: /home/username/fossrec/git
144
+
145
+ gitrepo: /home/username/fossrec
146
+
147
+ remotes: gitlab
148
+
149
+ EOF
150
+ end
151
+
152
+ def get_option opt, default=nil
153
+ if val = args.index(opt)
154
+ return (args.delete_at val and args.delete_at val)
155
+ else
156
+ return default
157
+ end
158
+ end
159
+
160
+ def option_switch? long_name
161
+ args.delete "-#{long_name[0]}" or args.delete "--#{long_name}"
162
+ end
163
+ end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fossgit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chad Perrin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-07 00:00:00.000000000 Z
11
+ date: 2019-06-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: " Maintain a presence in Git hosting for Fossil projects.\n"
13
+ description: " Maintain a presence in Git hosting for Fossil project mirrors.\n"
14
14
  email: code@apotheon.net
15
15
  executables:
16
16
  - fossgit
@@ -21,21 +21,26 @@ files:
21
21
  - README.md
22
22
  - bin/fossgit
23
23
  - lib/fossgit.rb
24
+ - lib/fossgit/cli.rb
24
25
  homepage: https://fossrec.com/u/apotheon/fossgit
25
26
  licenses:
26
27
  - COIL
27
28
  metadata: {}
28
29
  post_install_message: |2
29
30
  Thank you for using FossGit. For it to work properly, you need to have the
30
- following software dependencies installed:
31
+ following external software dependencies installed:
31
32
 
32
33
  * Fossil SCM (the world's most decentralized SCM and DVCS)
33
34
  * Git (the world's most popular DVCS)
34
35
  * sed (standard on Unix-like systems)
35
36
 
36
- Run "fossgit -h" for usage information.
37
+ This update adds support for configuration files and specifying which Git
38
+ remotes to push. It should not break backward compatibility. If it does,
39
+ that is a bug, and you are encouraged to report it at:
37
40
 
38
- Version 1.0.1 of FossGit starts the process of extracting a library.
41
+ https://fossrec.com/u/apotheon/fossgit/index.cgi/reportlist
42
+
43
+ Run "fossgit -h" for usage and configuration information.
39
44
  rdoc_options: []
40
45
  require_paths:
41
46
  - lib
@@ -43,7 +48,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
43
48
  requirements:
44
49
  - - ">="
45
50
  - !ruby/object:Gem::Version
46
- version: 1.9.3
51
+ version: 2.4.5
47
52
  required_rubygems_version: !ruby/object:Gem::Requirement
48
53
  requirements:
49
54
  - - ">="
@@ -51,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
51
56
  version: '0'
52
57
  requirements: []
53
58
  rubyforge_project:
54
- rubygems_version: 2.4.5.1
59
+ rubygems_version: 2.6.14.3
55
60
  signing_key:
56
61
  specification_version: 4
57
62
  summary: 'FossGit: Mirror Fossil to Git.'