mm-git-extend 0.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.
- data/.gitignore +17 -0
- data/Gemfile +3 -0
- data/bin/git-feature +35 -0
- data/features/git-feature.feature +31 -0
- data/features/step_definitions/git_steps.rb +47 -0
- data/features/support/env.rb +5 -0
- data/mm-git-extend.gemspec +17 -0
- data/readme.md +13 -0
- metadata +86 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/bin/git-feature
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
|
5
|
+
def git(command)
|
6
|
+
system("git " + command)
|
7
|
+
end
|
8
|
+
|
9
|
+
def branch_exists?(branch)
|
10
|
+
`git branch`.include? " " + branch
|
11
|
+
end
|
12
|
+
|
13
|
+
def branch_name
|
14
|
+
[OPTS[:prefix], ARGV[0]].join("/")
|
15
|
+
end
|
16
|
+
|
17
|
+
abort "git: No branch name given" unless ARGV[0]
|
18
|
+
|
19
|
+
OPTS = {
|
20
|
+
:prefix => 'feat'
|
21
|
+
}
|
22
|
+
|
23
|
+
op = OptionParser.new do |x|
|
24
|
+
x.on("-p", "--prefix [OPT]", "Branch prefix") do |n|
|
25
|
+
OPTS[:prefix] = n
|
26
|
+
end
|
27
|
+
end
|
28
|
+
op.parse!(ARGV)
|
29
|
+
|
30
|
+
if branch_exists?(branch_name)
|
31
|
+
puts "git: Branch already exists. Switching to '#{branch_name}'"
|
32
|
+
git "checkout " + branch_name
|
33
|
+
else
|
34
|
+
git "checkout -b " + branch_name
|
35
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
Feature: feature branch creation
|
2
|
+
In order to seperate my code to a feature branch
|
3
|
+
As a developer
|
4
|
+
I want to create a feature branch
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given I have a working repo
|
8
|
+
|
9
|
+
Scenario: Create feat branch
|
10
|
+
When I run `git feature test`
|
11
|
+
Then I should be on a branch called "feat/test"
|
12
|
+
|
13
|
+
Scenario: A branch already exists
|
14
|
+
Given I have a branch called "feat/test"
|
15
|
+
When I run `git feature test`
|
16
|
+
Then the output should contain "Branch already exists. Switching to 'feat/test'"
|
17
|
+
And I should be on a branch called "feat/test"
|
18
|
+
|
19
|
+
Scenario: Untracked changes
|
20
|
+
Given I have untracked changes
|
21
|
+
When I run `git feature test`
|
22
|
+
Then I should be on a branch called "feat/test"
|
23
|
+
|
24
|
+
Scenario: Uncommited changes
|
25
|
+
Given I have uncommited changes
|
26
|
+
When I run `git feature test`
|
27
|
+
Then I should be on a branch called "feat/test"
|
28
|
+
|
29
|
+
Scenario: run with no branch
|
30
|
+
When I run `git feature`
|
31
|
+
Then the output should contain "No branch name given"
|
@@ -0,0 +1,47 @@
|
|
1
|
+
def git(command)
|
2
|
+
system("git #{command}")
|
3
|
+
end
|
4
|
+
|
5
|
+
def repo_path(repo)
|
6
|
+
"tmp/" + repo
|
7
|
+
end
|
8
|
+
|
9
|
+
def remove_repo(repo)
|
10
|
+
FileUtils.rm_rf repo_path(repo)
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_repo(repo)
|
14
|
+
FileUtils.mkdir repo_path(repo)
|
15
|
+
Dir.chdir repo_path(repo)
|
16
|
+
FileUtils.touch 'readme.txt'
|
17
|
+
git 'init'
|
18
|
+
git 'add -A'
|
19
|
+
git 'commit -m "init"'
|
20
|
+
end
|
21
|
+
|
22
|
+
Given /^I have a branch called "(.*?)"$/ do |branch|
|
23
|
+
git 'checkout -b ' + branch
|
24
|
+
FileUtils.touch 'feature_file.txt'
|
25
|
+
git 'add -A'
|
26
|
+
git 'commit -m "init"'
|
27
|
+
git 'checkout master'
|
28
|
+
end
|
29
|
+
|
30
|
+
Given /^I have a working repo$/ do
|
31
|
+
remove_repo("git_repo")
|
32
|
+
create_repo("git_repo")
|
33
|
+
end
|
34
|
+
|
35
|
+
Then /^I should be on a branch called "(.*?)"$/ do |branch|
|
36
|
+
current_branch = `git rev-parse --abbrev-ref HEAD`.strip
|
37
|
+
current_branch.should == branch
|
38
|
+
end
|
39
|
+
|
40
|
+
Given /^I have uncommited changes$/ do
|
41
|
+
FileUtils.touch 'uncommited.txt'
|
42
|
+
git "add -A"
|
43
|
+
end
|
44
|
+
|
45
|
+
Given /^I have untracked changes$/ do
|
46
|
+
FileUtils.touch 'untracked.txt'
|
47
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "mm-git-extend"
|
3
|
+
s.version = "0.1.0"
|
4
|
+
s.platform = Gem::Platform::RUBY
|
5
|
+
s.authors = ["Mark McConachie"]
|
6
|
+
s.email = ["mark@markmcconachie.com"]
|
7
|
+
s.homepage = "http://markmcconachie.com"
|
8
|
+
s.summary = %q{Mark's Git extensions}
|
9
|
+
s.description = %q{Some (hopefully) userful git extensions}
|
10
|
+
|
11
|
+
s.add_development_dependency "cucumber"
|
12
|
+
s.add_development_dependency "aruba"
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
end
|
data/readme.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# Git extensions
|
2
|
+
|
3
|
+
Some git extensions
|
4
|
+
|
5
|
+
## Feature
|
6
|
+
|
7
|
+
Creates feature branches with a feat/ prefix.
|
8
|
+
Takes an argument --prefix to determin the prefix.
|
9
|
+
|
10
|
+
## Useful aliases
|
11
|
+
|
12
|
+
git config --global alias.feat 'feature -p exp'
|
13
|
+
git config --global alias.exp 'feature -p exp'
|
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mm-git-extend
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Mark McConachie
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-10-25 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: cucumber
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: aruba
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
description: Some (hopefully) userful git extensions
|
47
|
+
email:
|
48
|
+
- mark@markmcconachie.com
|
49
|
+
executables:
|
50
|
+
- git-feature
|
51
|
+
extensions: []
|
52
|
+
extra_rdoc_files: []
|
53
|
+
files:
|
54
|
+
- .gitignore
|
55
|
+
- Gemfile
|
56
|
+
- bin/git-feature
|
57
|
+
- features/git-feature.feature
|
58
|
+
- features/step_definitions/git_steps.rb
|
59
|
+
- features/support/env.rb
|
60
|
+
- mm-git-extend.gemspec
|
61
|
+
- readme.md
|
62
|
+
homepage: http://markmcconachie.com
|
63
|
+
licenses: []
|
64
|
+
post_install_message:
|
65
|
+
rdoc_options: []
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ! '>='
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
requirements: []
|
81
|
+
rubyforge_project:
|
82
|
+
rubygems_version: 1.8.23
|
83
|
+
signing_key:
|
84
|
+
specification_version: 3
|
85
|
+
summary: Mark's Git extensions
|
86
|
+
test_files: []
|