gitdummy 0.0.1
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 +5 -0
- data/Gemfile +5 -0
- data/Rakefile +3 -0
- data/bin/gitdummy +6 -0
- data/gitdummy.gemspec +25 -0
- data/lib/gitdummy.rb +38 -0
- data/lib/gitdummy/tests/config_test.rb +35 -0
- data/lib/gitdummy/tests/feature_branch_test.rb +22 -0
- data/lib/gitdummy/version.rb +4 -0
- metadata +102 -0
data/Gemfile
ADDED
data/Rakefile
ADDED
data/bin/gitdummy
ADDED
data/gitdummy.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "gitdummy/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "gitdummy"
|
7
|
+
s.version = Gitdummy::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = %w(aekym)
|
10
|
+
s.email = %w(me@aekym.com)
|
11
|
+
s.homepage = "http://aekym.com"
|
12
|
+
s.summary = %q{Small helper for a better start with git}
|
13
|
+
s.description = %q{'gitdummy' should help a fresh git user to make sure the config is correct and the current branch cares about public conventions.}
|
14
|
+
|
15
|
+
s.rubyforge_project = "gitdummy"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_dependency('grit', '>= 2.4.1')
|
23
|
+
s.add_dependency('thor', '>= 0.14.6')
|
24
|
+
end
|
25
|
+
|
data/lib/gitdummy.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
3
|
+
require 'grit'
|
4
|
+
require 'minitest/unit'
|
5
|
+
require 'thor'
|
6
|
+
require 'yaml'
|
7
|
+
|
8
|
+
|
9
|
+
module Gitdummy
|
10
|
+
class Cli < Thor
|
11
|
+
default_task :check
|
12
|
+
|
13
|
+
CONFIG_FILE = '.gitdummyrc'
|
14
|
+
|
15
|
+
def initialize(*args)
|
16
|
+
super
|
17
|
+
|
18
|
+
$repo = Grit::Repo.new('.')
|
19
|
+
$config = YAML.load_file(CONFIG_FILE) if File.readable?(CONFIG_FILE)
|
20
|
+
end
|
21
|
+
|
22
|
+
desc 'check', 'Check your current git repository and configuration'
|
23
|
+
method_options :'auto-fetch' => true
|
24
|
+
def check
|
25
|
+
system('git fetch') if options['auto-fetch']
|
26
|
+
|
27
|
+
test_dir = File.realpath('../lib/gitdummy/tests', File.dirname(__FILE__))
|
28
|
+
|
29
|
+
Dir["#{test_dir}/**/*_test.rb"].each do |file|
|
30
|
+
require file
|
31
|
+
end
|
32
|
+
|
33
|
+
MiniTest::Unit.new.run
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
class ConfigTest < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
def test_user_name
|
6
|
+
name = $repo.config['user.name'].force_encoding('utf-8')
|
7
|
+
|
8
|
+
# load configurable regexp to test the user's email
|
9
|
+
#
|
10
|
+
regexp = Regexp.new($config['tests']['config']['user']['name_regexp'].force_encoding('utf-8'))
|
11
|
+
|
12
|
+
assert_match regexp || /^\w+ \w+$/i, name,
|
13
|
+
"Please correct your user.name configuration with e.g. `git config user.name 'John Doe'`. `#{name}` not accepted"
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_user_email
|
17
|
+
email = $repo.config['user.email'].force_encoding('utf-8')
|
18
|
+
|
19
|
+
# load configurable regexp to test the user's email
|
20
|
+
#
|
21
|
+
regexp = Regexp.new($config['tests']['config']['user']['email_regexp'].force_encoding('utf-8'))
|
22
|
+
|
23
|
+
assert_match regexp || /^[a-z]+\.[a-z]+@\w+\.\w+$/, email,
|
24
|
+
"Please correct your user.email configuration with e.g. `git config user.email 'john.doe@example.com'`. `#{email}` not accepted"
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_default_tracking
|
28
|
+
push_default = $repo.config['push.default']
|
29
|
+
|
30
|
+
assert_equal 'tracking', push_default,
|
31
|
+
"Please correct you push.default configuration with `git config push.default tracking`. `#{push_default} no accepted."
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class FeatureBranchTest < MiniTest::Unit::TestCase
|
2
|
+
|
3
|
+
def test_branch_of_origin_master
|
4
|
+
head = $repo.head.commit
|
5
|
+
origin_master_id = $repo.remotes.find{|r| r.name == 'origin/master'}.commit.id
|
6
|
+
|
7
|
+
current = head
|
8
|
+
found = false
|
9
|
+
|
10
|
+
while !found && current do
|
11
|
+
if current.id == origin_master_id
|
12
|
+
found = true
|
13
|
+
end
|
14
|
+
|
15
|
+
current = current.parents.first
|
16
|
+
end
|
17
|
+
|
18
|
+
assert found, "Your current branch is outdated and needs a rebase to the origin/master branch with `git rebase origin/master`."
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
metadata
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gitdummy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: 0.0.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- aekym
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-03-06 00:00:00 +01:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: grit
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 2
|
30
|
+
- 4
|
31
|
+
- 1
|
32
|
+
version: 2.4.1
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: thor
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
- 14
|
46
|
+
- 6
|
47
|
+
version: 0.14.6
|
48
|
+
type: :runtime
|
49
|
+
version_requirements: *id002
|
50
|
+
description: "'gitdummy' should help a fresh git user to make sure the config is correct and the current branch cares about public conventions."
|
51
|
+
email:
|
52
|
+
- me@aekym.com
|
53
|
+
executables:
|
54
|
+
- gitdummy
|
55
|
+
extensions: []
|
56
|
+
|
57
|
+
extra_rdoc_files: []
|
58
|
+
|
59
|
+
files:
|
60
|
+
- .gitignore
|
61
|
+
- Gemfile
|
62
|
+
- Rakefile
|
63
|
+
- bin/gitdummy
|
64
|
+
- gitdummy.gemspec
|
65
|
+
- lib/gitdummy.rb
|
66
|
+
- lib/gitdummy/tests/config_test.rb
|
67
|
+
- lib/gitdummy/tests/feature_branch_test.rb
|
68
|
+
- lib/gitdummy/version.rb
|
69
|
+
has_rdoc: true
|
70
|
+
homepage: http://aekym.com
|
71
|
+
licenses: []
|
72
|
+
|
73
|
+
post_install_message:
|
74
|
+
rdoc_options: []
|
75
|
+
|
76
|
+
require_paths:
|
77
|
+
- lib
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
segments:
|
84
|
+
- 0
|
85
|
+
version: "0"
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
segments:
|
92
|
+
- 0
|
93
|
+
version: "0"
|
94
|
+
requirements: []
|
95
|
+
|
96
|
+
rubyforge_project: gitdummy
|
97
|
+
rubygems_version: 1.3.7
|
98
|
+
signing_key:
|
99
|
+
specification_version: 3
|
100
|
+
summary: Small helper for a better start with git
|
101
|
+
test_files: []
|
102
|
+
|