fossgit 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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.'