git_change 0.1.2
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 +7 -0
- data/.gitignore +9 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/README.md +15 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/exe/git-change +7 -0
- data/git_change.gemspec +27 -0
- data/lib/git_change.rb +3 -0
- data/lib/git_change/author.rb +61 -0
- data/lib/git_change/runner.rb +16 -0
- data/lib/git_change/templates/change_author.tt +17 -0
- data/lib/git_change/util.rb +21 -0
- metadata +142 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3a9e091589dac073e378f852adb342adb22a5504
|
4
|
+
data.tar.gz: 61e1cd513ff66ab827efef3de94597dfd7ab073a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: afe5fa12563024cb996893ee8f67a8369ed37e74bf968f13bb4d37ecc2d4c8ea22f3f30dab663ac11de283786d5bb3a334c97ad971722ad1626397566ad86e27
|
7
|
+
data.tar.gz: dd64b7b80250b25549e32726405e86410731fbb3bdd2b1774b0a625f0fc941699cb5cf7671ea41ac82a9b5568ac681d9f4c83f745db55140ed738337eacc9c8d
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# GitChange
|
2
|
+
|
3
|
+
## Usage
|
4
|
+
|
5
|
+
### Change author info
|
6
|
+
|
7
|
+
Change author info according to [this
|
8
|
+
instruction](https://help.github.com/articles/changing-author-info/)
|
9
|
+
|
10
|
+
$ git change author <name> <email> [--old-email <old_email>]
|
11
|
+
|
12
|
+
$ git change author new_name new_email@email.com
|
13
|
+
|
14
|
+
It will run the steps 1 to 4 from the above instruction.
|
15
|
+
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "git_change"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/exe/git-change
ADDED
data/git_change.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "git_change"
|
7
|
+
spec.version = "0.1.2"
|
8
|
+
spec.authors = ["iamdionysus"]
|
9
|
+
spec.email = ["iamdionysus@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = "help git to change author info, remote url and so on"
|
12
|
+
spec.description = spec.summary
|
13
|
+
spec.homepage = "https://github.com/iamdionysus/git_change"
|
14
|
+
|
15
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
16
|
+
spec.bindir = "exe"
|
17
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
18
|
+
spec.require_paths = ["lib"]
|
19
|
+
|
20
|
+
spec.add_runtime_dependency "colorize"
|
21
|
+
spec.add_runtime_dependency "thor", "~> 0.19"
|
22
|
+
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
24
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
+
spec.add_development_dependency "minitest"
|
26
|
+
spec.add_development_dependency "pry"
|
27
|
+
end
|
data/lib/git_change.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
require "git_change/util"
|
2
|
+
require "colorize"
|
3
|
+
require "thor"
|
4
|
+
|
5
|
+
module GitChange
|
6
|
+
class Author < Thor::Group
|
7
|
+
include Thor::Actions
|
8
|
+
|
9
|
+
argument :name
|
10
|
+
argument :email
|
11
|
+
class_option :old_email, default: GitChange::Util.user_email
|
12
|
+
|
13
|
+
def self.source_root
|
14
|
+
File.dirname(__FILE__)
|
15
|
+
end
|
16
|
+
|
17
|
+
def clone_repo_bare
|
18
|
+
# get remote url for current repo
|
19
|
+
remote_url = GitChange::Util.git_remote_url
|
20
|
+
if remote_url.empty?
|
21
|
+
puts "You need to have remote repository to work on".colorize(:red)
|
22
|
+
return
|
23
|
+
end
|
24
|
+
if File.directory? "temp_repo"
|
25
|
+
puts "temp_repo directory already exists".colorize(:red)
|
26
|
+
return
|
27
|
+
end
|
28
|
+
# git clone bare to temp_repo to work on
|
29
|
+
system "git clone --bare #{remote_url} temp_repo"
|
30
|
+
puts "First step: clone the bare repository is done".colorize(:green)
|
31
|
+
end
|
32
|
+
|
33
|
+
def run_change_author_script
|
34
|
+
# create script
|
35
|
+
template "templates/change_author.tt", "temp_repo/change_author.sh"
|
36
|
+
inside "temp_repo" do
|
37
|
+
# run the script
|
38
|
+
run "sh ./change_author.sh"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def set_local_config
|
43
|
+
old_name = GitChange::Util.user_name
|
44
|
+
old_email = options[:old_email]
|
45
|
+
puts "change local config user.name from #{old_name} to #{name}".
|
46
|
+
colorize(:green)
|
47
|
+
puts "change local config user.email from #{old_email} to #{email}".
|
48
|
+
colorize(:green)
|
49
|
+
`git config user.name #{name}`
|
50
|
+
`git config user.email #{email}`
|
51
|
+
end
|
52
|
+
|
53
|
+
def puts_command_to_finish
|
54
|
+
puts "After you review the change, you can run the command below"
|
55
|
+
puts "inside temp_repo, after that remove the temp_repo"
|
56
|
+
puts "============================================================"
|
57
|
+
puts "git push --force --tags origin 'refs/heads/*'"
|
58
|
+
puts "============================================================"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "thor"
|
2
|
+
require "git_change"
|
3
|
+
|
4
|
+
module GitChange
|
5
|
+
class Runner < Thor
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
desc "author <name> <email> [--old_email=old_email]",
|
9
|
+
"Change author info in git log"
|
10
|
+
method_option :old_email, aliases: "-e", type: :string,
|
11
|
+
desc: "old email address to change"
|
12
|
+
def author(name, email)
|
13
|
+
invoke GitChange::Author, [name, email], options
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
git filter-branch --env-filter '
|
4
|
+
OLD_EMAIL="<%= options[:old_email] %>"
|
5
|
+
CORRECT_NAME="<%= name %>"
|
6
|
+
CORRECT_EMAIL="<%= email %>"
|
7
|
+
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
|
8
|
+
then
|
9
|
+
export GIT_COMMITTER_NAME="$CORRECT_NAME"
|
10
|
+
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
|
11
|
+
fi
|
12
|
+
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
|
13
|
+
then
|
14
|
+
export GIT_AUTHOR_NAME="$CORRECT_NAME"
|
15
|
+
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
|
16
|
+
fi
|
17
|
+
' --tag-name-filter cat -- --branches --tags
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module GitChange
|
2
|
+
class Util
|
3
|
+
class << self
|
4
|
+
def git_remote_url
|
5
|
+
result = `git remote --verbose`
|
6
|
+
remote = result.lines.first.split "\s"
|
7
|
+
name = remote.shift
|
8
|
+
url = remote.shift
|
9
|
+
url
|
10
|
+
end
|
11
|
+
|
12
|
+
def user_name
|
13
|
+
`git config user.name`.strip
|
14
|
+
end
|
15
|
+
|
16
|
+
def user_email
|
17
|
+
`git config user.email`.strip
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: git_change
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- iamdionysus
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-10-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: colorize
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: thor
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.19'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.19'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.10'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.10'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: help git to change author info, remote url and so on
|
98
|
+
email:
|
99
|
+
- iamdionysus@gmail.com
|
100
|
+
executables:
|
101
|
+
- git-change
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- ".gitignore"
|
106
|
+
- ".travis.yml"
|
107
|
+
- Gemfile
|
108
|
+
- README.md
|
109
|
+
- Rakefile
|
110
|
+
- bin/console
|
111
|
+
- bin/setup
|
112
|
+
- exe/git-change
|
113
|
+
- git_change.gemspec
|
114
|
+
- lib/git_change.rb
|
115
|
+
- lib/git_change/author.rb
|
116
|
+
- lib/git_change/runner.rb
|
117
|
+
- lib/git_change/templates/change_author.tt
|
118
|
+
- lib/git_change/util.rb
|
119
|
+
homepage: https://github.com/iamdionysus/git_change
|
120
|
+
licenses: []
|
121
|
+
metadata: {}
|
122
|
+
post_install_message:
|
123
|
+
rdoc_options: []
|
124
|
+
require_paths:
|
125
|
+
- lib
|
126
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
requirements: []
|
137
|
+
rubyforge_project:
|
138
|
+
rubygems_version: 2.4.5.1
|
139
|
+
signing_key:
|
140
|
+
specification_version: 4
|
141
|
+
summary: help git to change author info, remote url and so on
|
142
|
+
test_files: []
|