git-utils 0.7.0 → 2.2.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 +5 -5
- data/README.md +29 -27
- data/bin/git-cleanup +4 -4
- data/bin/git-graph +4 -0
- data/bin/{git-merge-branch → git-merge-into-branch} +3 -3
- data/bin/git-minor +4 -0
- data/bin/git-sync-fork +6 -0
- data/lib/git-utils.rb +1 -0
- data/lib/git-utils/command.rb +22 -1
- data/lib/git-utils/merge_branch.rb +4 -4
- data/lib/git-utils/open.rb +1 -1
- data/lib/git-utils/sync.rb +2 -2
- data/lib/git-utils/sync_fork.rb +21 -0
- data/lib/git-utils/version.rb +1 -1
- data/spec/commands/merge_branch_spec.rb +20 -5
- data/spec/commands/sync_fork_spec.rb +17 -0
- metadata +14 -8
- data/bin/git-anal +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3e1c46d3c400bbc8d913745063c92a103b45b11e59cdd2bb494a099100b12d05
|
4
|
+
data.tar.gz: b2d4253cc25ec916282f1bfd9198f3017d6369bc55deb41b3a0161fb52bbd34c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bff26db7b631b266ba97210256544ca7031efb99e4af1f9289414598c343d8f9762421e386921c58d3c00ad93a5bc03d7eed2e3e60dcc5b26d9f5411d71aee3a
|
7
|
+
data.tar.gz: 5ba1d70da71ae6b35afa1fa1dd7e8ceb36b2db348587b9a7adb910fc084f5a4933aefba765f2d0b9db2e96975083dcea99f99b9de74efd6c1472eb6e75fdfa34
|
data/README.md
CHANGED
@@ -1,62 +1,64 @@
|
|
1
1
|
# Git utilities
|
2
2
|
|
3
|
-
This repo contains some Git utility scripts. The highlights are `git open`, `git pull-request`, `git push-branch`, and `git undo`, which you
|
3
|
+
This repo contains some Git utility scripts. The highlights are `git open`, `git pull-request`, `git push-branch`, and `git undo`, which you’ll never understand how you did without.
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
The `git-utils` used to be pure Bash scripts, but they are now available as a Ruby gem, both because Ruby is more powerful than bash and because now `git-utils` can be included more easily as a dependency for the [pivotal-github](https://github.com/mhartl/pivotal-github/) gem. As a result, installation is easy if you have RubyGems installed:
|
5
|
+
`git-utils` used to be pure Bash scripts, but they are now available as a Ruby gem:
|
8
6
|
|
9
7
|
gem install git-utils
|
10
8
|
|
9
|
+
See below for more details on the commands defined by `git-utils`. To learn more about how to use Git itself, see the tutorial book and online course [*Learn Enough Git to Be Dangerous*](https://www.learnenough.com/git).
|
10
|
+
|
11
11
|
## Commands
|
12
12
|
|
13
13
|
* `git amend`: alias for `git commit --amend`
|
14
|
-
* `git
|
15
|
-
* `git
|
16
|
-
* `git
|
17
|
-
* `git
|
18
|
-
* `git open`: opens the remote page for the repo (
|
19
|
-
* `git polish`: makes a commit with the message "Polish"
|
20
|
-
* `git pull-request`: pushes the branch and opens the remote page for issuing a new a pull request (
|
14
|
+
* `git bump`: makes a commit with the message `"Bump version number"`
|
15
|
+
* `git cleanup`: deletes every branch already merged into current branch (apart from `master`, `main`, `staging`, `development`, and any branches listed in `~/.git-cleanup-preserved`). Pass the `-r` option to delete remote merged branches.
|
16
|
+
* `git merge-into-branch [branch]`: merges current branch into given branch (defaults to repo's default branch)
|
17
|
+
* `git minor`: makes a commit with the message `"Make minor changes"`
|
18
|
+
* `git open`: opens the remote page for the repo (macOS & Linux)
|
19
|
+
* `git polish`: makes a commit with the message `"Polish"`
|
20
|
+
* `git pull-request`: pushes the branch and opens the remote page for issuing a new a pull request (macOS-only)
|
21
21
|
* `git push-branch`: pushes the current branch up to origin
|
22
22
|
* `git delete-remote-branch <branch>`: deletes the remote branch if it is safe to do so
|
23
23
|
* `git switch <pattern>`: switches to the first branch matching the given pattern
|
24
|
-
* `git sync [branch]`: syncs the given branch with the remote branch (defaults to
|
25
|
-
* `git
|
24
|
+
* `git sync [branch]`: syncs the given branch with the remote branch (defaults to repo's default branch)
|
25
|
+
* `git sync-fork`: syncs the default branch of a fork with the original upstream default (assumes upstream configuration as in “[Configuring a remote for a fork](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/configuring-a-remote-for-a-fork)”)
|
26
|
+
* `git typo`: makes a commit with the message `"Fix typo"`
|
26
27
|
* `git undo`: undoes the last commit
|
28
|
+
* `git graph`: displays full repository history in graphical format; alias for `git log --graph --oneline --decorate --all --full-history --author-date-order --no-notes`
|
27
29
|
|
28
30
|
## Aliases
|
29
31
|
|
30
32
|
Here are some suggested aliases:
|
31
33
|
|
32
|
-
git config --global alias.
|
33
|
-
git config --global alias.pr
|
34
|
-
git config --global alias.pb
|
34
|
+
git config --global alias.mib merge-into-branch
|
35
|
+
git config --global alias.pr pull-request
|
36
|
+
git config --global alias.pb push-branch
|
35
37
|
|
36
38
|
## Further details
|
37
39
|
|
38
40
|
Some of these commands deserve further explanation.
|
39
41
|
|
40
|
-
### git merge-branch
|
42
|
+
### git merge-into-branch
|
41
43
|
|
42
|
-
`git merge-branch [target]` merges the current branch into the target branch (defaults to
|
44
|
+
`git merge-into-branch [target]` merges the current branch into the target branch (defaults to repo's default branch). On a branch called `add-markdown-support` in a repo with default branch `main`, `git merge-into-branch` is equivalent to the following:
|
43
45
|
|
44
|
-
$ git checkout
|
46
|
+
$ git checkout main
|
45
47
|
$ git merge --no-ff --log add-markdown-support
|
46
48
|
|
47
|
-
Note that this effectively changes the default merge behavior from fast-forward to no-fast-forward, which makes it possible to use `git log` to see which of the commit objects together have implemented a feature on a particular branch. As noted in [A successful Git branching model](http://nvie.com/posts/a-successful-git-branching-model/)
|
49
|
+
Note that this effectively changes the default merge behavior from fast-forward to no-fast-forward, which makes it possible to use `git log` to see which of the commit objects together have implemented a feature on a particular branch. As noted in [A successful Git branching model](http://nvie.com/posts/a-successful-git-branching-model/):
|
48
50
|
|
49
51
|
> The `--no-ff` flag causes the merge to always create a new commit object, even if the merge could be performed with a fast-forward. This avoids losing information about the historical existence of a feature branch and groups together all commits that together added the feature… Yes, it will create a few more (empty) commit objects, but the gain is much bigger than that cost.
|
50
52
|
|
51
53
|
In addition, the `--log` option puts the commit messages from the individual commits in the merge message, which is especially useful for viewing the full diff represented by the commit.
|
52
54
|
|
53
|
-
These options can be overriden (and thus restored to their defaults) by passing the options `-ff` or `--no-log`. `git merge-branch` accepts any options valid for `git merge`.
|
55
|
+
These options can be overriden (and thus restored to their defaults) by passing the options `-ff` or `--no-log`. `git merge-into-branch` accepts any options valid for `git merge`.
|
54
56
|
|
55
57
|
### git push-branch
|
56
58
|
|
57
59
|
`git push-branch` creates a remote branch at `origin` with the name of the current branch:
|
58
60
|
|
59
|
-
$ git branch
|
61
|
+
$ git push-branch
|
60
62
|
* [new branch] add-markdown-support -> add-markdown-support
|
61
63
|
|
62
64
|
`git push-branch` accepts any options valid for `git push`.
|
@@ -64,24 +66,24 @@ These options can be overriden (and thus restored to their defaults) by passing
|
|
64
66
|
|
65
67
|
### git sync
|
66
68
|
|
67
|
-
`git sync [branch]` syncs the given local branch with the remote branch (defaults to
|
69
|
+
`git sync [branch]` syncs the given local branch with the remote branch (defaults to repo's default branch). On a branch called `add-markdown-support` in a repo with default branch `master`, `git sync` is equivalent to the following:
|
68
70
|
|
69
71
|
$ git checkout master
|
70
72
|
$ git pull
|
71
73
|
$ git checkout add-markdown-support
|
72
74
|
|
73
|
-
The main purpose of `git sync` is to prepare the current branch for merging with
|
75
|
+
The main purpose of `git sync` is to prepare the current branch for merging with the default branch:
|
74
76
|
|
75
77
|
$ git sync
|
76
|
-
$ git merge master
|
78
|
+
$ git merge master # or `main`, etc.
|
77
79
|
|
78
80
|
(This is essentially equivalent to
|
79
81
|
|
80
82
|
$ git fetch
|
81
83
|
$ git merge origin/master
|
82
84
|
|
83
|
-
but I don
|
85
|
+
but I don’t like having `master` and `origin/master` be different since that means you have to remember to run `git pull` on `master` some time down the line.)
|
84
86
|
|
85
87
|
## Installation
|
86
88
|
|
87
|
-
gem install git-utils
|
89
|
+
gem install git-utils
|
data/bin/git-cleanup
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
require 'optparse'
|
3
3
|
|
4
4
|
# Deletes (almost) every branch already merged into current branch.
|
5
|
-
# Exceptions are `master`, `staging`, and `development`,
|
6
|
-
# branch, which are preserved.
|
7
|
-
# `~/.git-cleanup-preserved` file.
|
5
|
+
# Exceptions are `master`, `main`, `staging`, and `development`,
|
6
|
+
# and the current branch, which are preserved.
|
7
|
+
# We also support custom configuration via the `~/.git-cleanup-preserved` file.
|
8
8
|
|
9
9
|
options = {}
|
10
10
|
OptionParser.new do |opts|
|
@@ -15,7 +15,7 @@ OptionParser.new do |opts|
|
|
15
15
|
end
|
16
16
|
end.parse!
|
17
17
|
|
18
|
-
preserved = "master|staging|development"
|
18
|
+
preserved = "master|main|staging|development"
|
19
19
|
preserved_file = File.join(Dir.home, '.git-cleanup-preserved')
|
20
20
|
if File.exist?(preserved_file)
|
21
21
|
additional_preserved = File.read(preserved_file).strip.split("\n")
|
data/bin/git-graph
ADDED
@@ -3,9 +3,9 @@ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
|
3
3
|
require 'git-utils/merge_branch'
|
4
4
|
|
5
5
|
# Merges the current branch into the given branch (defaults to master).
|
6
|
-
# E.g., 'git merge-branch foobar' merges the current branch into foobar.
|
7
|
-
# 'git merge-branch', merges the current branch into master.
|
8
|
-
# git merge-branch uses the --no-ff --log options to ensure that the
|
6
|
+
# E.g., 'git merge-into-branch foobar' merges the current branch into foobar.
|
7
|
+
# 'git merge-into-branch', merges the current branch into master.
|
8
|
+
# git merge-into-branch uses the --no-ff --log options to ensure that the
|
9
9
|
# merge creates a new commit object and that the individual commits appear
|
10
10
|
# in the log file.
|
11
11
|
exit Command.run!(MergeBranch, ARGV.dup)
|
data/bin/git-minor
ADDED
data/bin/git-sync-fork
ADDED
data/lib/git-utils.rb
CHANGED
data/lib/git-utils/command.rb
CHANGED
@@ -26,6 +26,27 @@ class Command
|
|
26
26
|
@current_branch ||= `git rev-parse --abbrev-ref HEAD`.strip
|
27
27
|
end
|
28
28
|
|
29
|
+
# Returns the default branch for the current repository.
|
30
|
+
# Command retrieved from
|
31
|
+
# https://stackoverflow.com/questions/28666357/git-how-to-get-default-branch
|
32
|
+
def default_branch
|
33
|
+
branch_name = `git symbolic-ref --short refs/remotes/origin/HEAD \
|
34
|
+
| sed 's@^origin/@@'`.strip
|
35
|
+
if branch_name.empty?
|
36
|
+
$stderr.puts "Repository configuration error"
|
37
|
+
$stderr.puts "Missing reference to refs/remotes/origin/HEAD"
|
38
|
+
$stderr.puts "Run"
|
39
|
+
$stderr.puts
|
40
|
+
$stderr.puts " git remote set-head origin <default branch>"
|
41
|
+
$stderr.puts
|
42
|
+
$stderr.puts "where <default branch> is the default branch name"
|
43
|
+
$stderr.puts "(typically `main`, `master`, or `trunk`)"
|
44
|
+
$stderr.puts "and then rerun the command"
|
45
|
+
exit(1)
|
46
|
+
end
|
47
|
+
@default_branch ||= branch_name
|
48
|
+
end
|
49
|
+
|
29
50
|
# Returns the URL for the remote origin.
|
30
51
|
def origin_url
|
31
52
|
@origin_url ||= `git config --get remote.origin.url`.strip
|
@@ -95,4 +116,4 @@ class Command
|
|
95
116
|
def deliver?
|
96
117
|
options.deliver
|
97
118
|
end
|
98
|
-
end
|
119
|
+
end
|
@@ -4,7 +4,7 @@ class MergeBranch < Command
|
|
4
4
|
|
5
5
|
def parser
|
6
6
|
OptionParser.new do |opts|
|
7
|
-
opts.banner = "Usage: git merge-branch [branch] [options]"
|
7
|
+
opts.banner = "Usage: git merge-into-branch [branch] [options]"
|
8
8
|
opts.on_tail("-h", "--help", "this usage guide") do
|
9
9
|
puts opts.to_s; exit 0
|
10
10
|
end
|
@@ -28,8 +28,8 @@ class MergeBranch < Command
|
|
28
28
|
|
29
29
|
# Returns the name of the branch to be merged into.
|
30
30
|
# If there is anything left in the known options after parsing,
|
31
|
-
# that's the merge branch. Otherwise, it's
|
31
|
+
# that's the merge branch. Otherwise, it's the default branch.
|
32
32
|
def target_branch
|
33
|
-
self.known_options.first ||
|
33
|
+
self.known_options.first || default_branch
|
34
34
|
end
|
35
|
-
end
|
35
|
+
end
|
data/lib/git-utils/open.rb
CHANGED
@@ -34,7 +34,7 @@ class Open < Command
|
|
34
34
|
origin_url.sub(pattern, replacement)
|
35
35
|
end
|
36
36
|
|
37
|
-
# Returns a command appropriate for executing at the command line
|
37
|
+
# Returns a command appropriate for executing at the command line.
|
38
38
|
def cmd
|
39
39
|
if options[:print]
|
40
40
|
puts page_url
|
data/lib/git-utils/sync.rb
CHANGED
@@ -13,10 +13,10 @@ class Sync < Command
|
|
13
13
|
|
14
14
|
# Returns a command appropriate for executing at the command line.
|
15
15
|
def cmd
|
16
|
-
branch = self.known_options.first ||
|
16
|
+
branch = self.known_options.first || default_branch
|
17
17
|
c = ["git checkout #{branch}"]
|
18
18
|
c << "git pull"
|
19
19
|
c << "git checkout #{current_branch}"
|
20
20
|
c.join("\n")
|
21
21
|
end
|
22
|
-
end
|
22
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'git-utils/command'
|
2
|
+
|
3
|
+
class SyncFork < Command
|
4
|
+
|
5
|
+
def parser
|
6
|
+
OptionParser.new do |opts|
|
7
|
+
opts.banner = "Usage: git sync-fork [default]"
|
8
|
+
opts.on_tail("-h", "--help", "this usage guide") do
|
9
|
+
puts opts.to_s; exit 0
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# Returns a command appropriate for executing at the command line.
|
15
|
+
def cmd
|
16
|
+
c = ["git checkout #{default_branch}"]
|
17
|
+
c << "git fetch upstream"
|
18
|
+
c << "git merge upstream/#{default_branch}"
|
19
|
+
c.join("\n")
|
20
|
+
end
|
21
|
+
end
|
data/lib/git-utils/version.rb
CHANGED
@@ -3,12 +3,12 @@ require 'spec_helper'
|
|
3
3
|
describe MergeBranch do
|
4
4
|
|
5
5
|
let(:command) { MergeBranch.new }
|
6
|
-
before
|
6
|
+
before { command.stub(:current_branch).and_return('tau-manifesto') }
|
7
7
|
subject { command }
|
8
8
|
|
9
9
|
its(:cmd) { should match /git merge/ }
|
10
10
|
|
11
|
-
shared_examples "merge-branch with known options" do
|
11
|
+
shared_examples "merge-into-branch with known options" do
|
12
12
|
subject { command }
|
13
13
|
it "should not raise an error" do
|
14
14
|
expect { command.parse }.not_to raise_error(OptionParser::InvalidOption)
|
@@ -19,6 +19,21 @@ describe MergeBranch do
|
|
19
19
|
its(:cmd) { should match /git checkout master/ }
|
20
20
|
end
|
21
21
|
|
22
|
+
describe "default branch" do
|
23
|
+
let(:command) { MergeBranch.new }
|
24
|
+
|
25
|
+
describe "for current real repo" do
|
26
|
+
subject { command.default_branch }
|
27
|
+
it { should match 'master' }
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "for repo with different default" do
|
31
|
+
before { command.stub(:default_branch).and_return('main') }
|
32
|
+
subject { command.default_branch }
|
33
|
+
it { should match 'main' }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
22
37
|
describe "with a custom development branch" do
|
23
38
|
let(:command) { MergeBranch.new(['development']) }
|
24
39
|
its(:cmd) { should match /git checkout development/ }
|
@@ -26,13 +41,13 @@ describe MergeBranch do
|
|
26
41
|
|
27
42
|
describe "with some unknown options" do
|
28
43
|
let(:command) { MergeBranch.new(['dev', '-o', '-a', '-z', '--foo']) }
|
29
|
-
it_should_behave_like "merge-branch with known options"
|
44
|
+
it_should_behave_like "merge-into-branch with known options"
|
30
45
|
its(:cmd) { should match /-a -z --foo/ }
|
31
46
|
end
|
32
47
|
|
33
48
|
describe "command-line command" do
|
34
|
-
subject { `bin/git-merge-branch --debug development` }
|
49
|
+
subject { `bin/git-merge-into-branch --debug development` }
|
35
50
|
it { should match /git checkout development/ }
|
36
51
|
it { should match /git merge --no-ff --log/ }
|
37
52
|
end
|
38
|
-
end
|
53
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SyncFork do
|
4
|
+
|
5
|
+
let(:command) { SyncFork.new }
|
6
|
+
subject { command }
|
7
|
+
|
8
|
+
its(:cmd) { should match /git checkout master/ }
|
9
|
+
its(:cmd) { should match /git fetch upstream/ }
|
10
|
+
its(:cmd) { should match /git merge upstream\/master/ }
|
11
|
+
|
12
|
+
|
13
|
+
describe "command-line command" do
|
14
|
+
subject { `bin/git-sync-fork --debug` }
|
15
|
+
it { should match /git fetch upstream/ }
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,31 +1,33 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Hartl
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Add some Git utilities
|
14
14
|
email:
|
15
15
|
- michael@michaelhartl.com
|
16
16
|
executables:
|
17
17
|
- git-amend
|
18
|
-
- git-anal
|
19
18
|
- git-bump
|
20
19
|
- git-cleanup
|
21
20
|
- git-delete-remote-branch
|
22
|
-
- git-
|
21
|
+
- git-graph
|
22
|
+
- git-merge-into-branch
|
23
|
+
- git-minor
|
23
24
|
- git-open
|
24
25
|
- git-polish
|
25
26
|
- git-pull-request
|
26
27
|
- git-push-branch
|
27
28
|
- git-switch
|
28
29
|
- git-sync
|
30
|
+
- git-sync-fork
|
29
31
|
- git-typo
|
30
32
|
- git-undo
|
31
33
|
extensions: []
|
@@ -40,17 +42,19 @@ files:
|
|
40
42
|
- README.md
|
41
43
|
- Rakefile
|
42
44
|
- bin/git-amend
|
43
|
-
- bin/git-anal
|
44
45
|
- bin/git-bump
|
45
46
|
- bin/git-cleanup
|
46
47
|
- bin/git-delete-remote-branch
|
47
|
-
- bin/git-
|
48
|
+
- bin/git-graph
|
49
|
+
- bin/git-merge-into-branch
|
50
|
+
- bin/git-minor
|
48
51
|
- bin/git-open
|
49
52
|
- bin/git-polish
|
50
53
|
- bin/git-pull-request
|
51
54
|
- bin/git-push-branch
|
52
55
|
- bin/git-switch
|
53
56
|
- bin/git-sync
|
57
|
+
- bin/git-sync-fork
|
54
58
|
- bin/git-typo
|
55
59
|
- bin/git-undo
|
56
60
|
- git-utils.gemspec
|
@@ -64,6 +68,7 @@ files:
|
|
64
68
|
- lib/git-utils/push_branch.rb
|
65
69
|
- lib/git-utils/switch.rb
|
66
70
|
- lib/git-utils/sync.rb
|
71
|
+
- lib/git-utils/sync_fork.rb
|
67
72
|
- lib/git-utils/version.rb
|
68
73
|
- spec/.DS_Store
|
69
74
|
- spec/commands/.DS_Store
|
@@ -74,6 +79,7 @@ files:
|
|
74
79
|
- spec/commands/pull_request_spec.rb
|
75
80
|
- spec/commands/push_branch_spec.rb
|
76
81
|
- spec/commands/switch_spec.rb
|
82
|
+
- spec/commands/sync_fork_spec.rb
|
77
83
|
- spec/commands/sync_spec.rb
|
78
84
|
- spec/spec_helper.rb
|
79
85
|
homepage: https://github.com/mhartl/git-utils
|
@@ -95,8 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
101
|
- !ruby/object:Gem::Version
|
96
102
|
version: '0'
|
97
103
|
requirements: []
|
98
|
-
|
99
|
-
rubygems_version: 2.4.5.1
|
104
|
+
rubygems_version: 3.1.4
|
100
105
|
signing_key:
|
101
106
|
specification_version: 4
|
102
107
|
summary: See the README for full documentation
|
@@ -110,5 +115,6 @@ test_files:
|
|
110
115
|
- spec/commands/pull_request_spec.rb
|
111
116
|
- spec/commands/push_branch_spec.rb
|
112
117
|
- spec/commands/switch_spec.rb
|
118
|
+
- spec/commands/sync_fork_spec.rb
|
113
119
|
- spec/commands/sync_spec.rb
|
114
120
|
- spec/spec_helper.rb
|
data/bin/git-anal
DELETED