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 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
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.3
4
+ before_install: gem install bundler -v 1.10.6
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in git_change.gemspec
4
+ gemspec
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
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
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
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
data/exe/git-change ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ lib = File.expand_path("../../lib", __FILE__)
3
+ $LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
4
+
5
+ require "git_change/runner"
6
+
7
+ GitChange::Runner.start
@@ -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,3 @@
1
+ require "git_change/author"
2
+ require "git_change/util"
3
+
@@ -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: []