cgit 0.0.1 → 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.
- checksums.yaml +5 -5
- data/bin/cgit +66 -4
- metadata +6 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1a754fd3e2c9bf61c8ec212036cc1c16d6989721a0db71a2576a94b87c50df52
|
4
|
+
data.tar.gz: a4b37f093920bb1fb3fd6e0ad2c3c82dcb6e8ddb723b1e49f5db898ed90442c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27f80ac94ed36775a82d2753213fa0d374bf0af780f82d7808d23a7bad523a5af45b3d7db4dd4575f79bf0af7f3e821e995ececc08d19799539adf6a9324a1c0
|
7
|
+
data.tar.gz: c240dc862bb748143256487b72e33ad339c742252cc4fc3cad15d126c3cb7631502023e622ef17c9f7d42d044e3711d92fa98bc70036108f3c821dbd2368a4cf
|
data/bin/cgit
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'Thor'
|
4
4
|
|
5
5
|
class CGit < Thor
|
6
|
-
desc "put MESSAGE", "Adds and commits with a MESSAGE."
|
6
|
+
desc "put [MESSAGE]", "Adds and commits with a MESSAGE."
|
7
7
|
method_option :remote, :aliases => "-r", :desc => "Applies this remotely to the current branch."
|
8
8
|
def put(message)
|
9
9
|
system ("git add --a .")
|
@@ -20,7 +20,7 @@ class CGit < Thor
|
|
20
20
|
system ("git reset --soft HEAD^")
|
21
21
|
end
|
22
22
|
|
23
|
-
desc "retip COMMIT", "Moves the TIP of the current branch"
|
23
|
+
desc "retip [COMMIT]", "Moves the TIP of the current branch"
|
24
24
|
method_option :remote, :aliases => "-r", :desc => "Applies this remotely to the current branch."
|
25
25
|
def retip(commit)
|
26
26
|
system ("git reset --hard #{commit}")
|
@@ -37,13 +37,13 @@ class CGit < Thor
|
|
37
37
|
git log --pretty=format:\"%h %s\" --graph")
|
38
38
|
end
|
39
39
|
|
40
|
-
desc "
|
40
|
+
desc "unpushed", "Displays unpushed commits to remote in all branches."
|
41
41
|
def valid
|
42
42
|
puts ("Non pushed commits:")
|
43
43
|
system ("git log --branches --not --remotes --decorate --oneline")
|
44
44
|
end
|
45
45
|
|
46
|
-
desc "merge DESTINATION_BRANCH SOURCE_BRANCH", "Pulls latest remote changes on both branches and then merges the SOURCE_BRANCH into the DESTINATION_BRANCH."
|
46
|
+
desc "merge [DESTINATION_BRANCH] [SOURCE_BRANCH]", "Pulls latest remote changes on both branches and then merges the SOURCE_BRANCH into the DESTINATION_BRANCH."
|
47
47
|
method_option :remote, :aliases => "-r", :desc => "Pushes the merge remotely to the current branch. Be aware that this will not work if there are conflicts."
|
48
48
|
def merge(destination_branch, source_branch)
|
49
49
|
system ("git checkout #{source_branch}")
|
@@ -62,6 +62,68 @@ class CGit < Thor
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
desc "squash [BASE_BRANCH]", "Squashes commits in the current branch and synchronizes with the remote BASE_BRANCH. Commits to squash are selected by comparing the up-to-date remote BASE_BRANCH with the current branch HEAD. Committing the squash may fail if there is a merge conflict. It's recommended to merge with the base branch beforehand if there is a chance of merge conflicts."
|
66
|
+
method_option :message, :aliases => "-m", :desc => "Message to override the default squash message. Cannot be used together with title(-t) parameter."
|
67
|
+
method_option :title, :aliases => "-t", :desc => "Title for the default squash commit message. Will be followed by a list of messages for each commit. If not specified, the title will be the default. Cannot be used together with message(-m) parameter."
|
68
|
+
method_option :remote, :aliases => "-r", :desc => "Pushes the merge remotely to the current branch"
|
69
|
+
def squash(base_branch)
|
70
|
+
message = options[:message]
|
71
|
+
title = options[:title]
|
72
|
+
|
73
|
+
if message && title
|
74
|
+
puts("Please specify only message or title.")
|
75
|
+
exit 1
|
76
|
+
end
|
77
|
+
|
78
|
+
system ("git fetch")
|
79
|
+
system ("git branch -D cgit_squash_backup")
|
80
|
+
system ("git branch cgit_squash_backup")
|
81
|
+
system ("git reset --hard origin/#{base_branch}")
|
82
|
+
system ("git merge --squash cgit_squash_backup")
|
83
|
+
|
84
|
+
if message
|
85
|
+
system ("git commit -m \"#{message}\"")
|
86
|
+
else
|
87
|
+
git_dir = `git rev-parse --git-dir`.delete("\n")
|
88
|
+
file_path = "#{git_dir}/SQUASH_MSG"
|
89
|
+
lines = File.readlines(file_path)
|
90
|
+
skip_count = 0
|
91
|
+
File.open(file_path, 'w') do |file|
|
92
|
+
if title
|
93
|
+
file.puts(title)
|
94
|
+
else
|
95
|
+
file.puts("Squashed commits")
|
96
|
+
end
|
97
|
+
file.puts("")
|
98
|
+
|
99
|
+
# Filter and write the commit messages only
|
100
|
+
lines.each_with_index do |line, i|
|
101
|
+
if skip_count > 0
|
102
|
+
skip_count -= 1
|
103
|
+
next
|
104
|
+
end
|
105
|
+
if line.empty? || line == "\n" || i == 0
|
106
|
+
next
|
107
|
+
end
|
108
|
+
if i + 2 < lines.size - 1 &&
|
109
|
+
line.start_with?("commit") &&
|
110
|
+
lines[i+1].start_with?("Author:") &&
|
111
|
+
lines[i+2].start_with?("Date:")
|
112
|
+
skip_count = 2
|
113
|
+
next
|
114
|
+
end
|
115
|
+
file.puts("* #{line.strip}")
|
116
|
+
end
|
117
|
+
end
|
118
|
+
system ("git commit --no-edit")
|
119
|
+
end
|
120
|
+
|
121
|
+
remote = options[:remote]
|
122
|
+
if remote
|
123
|
+
system ("git push origin HEAD")
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
65
127
|
end
|
66
128
|
|
67
129
|
CGit.start
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cgit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Wong
|
@@ -14,14 +14,14 @@ dependencies:
|
|
14
14
|
name: thor
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.19.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.19.1
|
27
27
|
description: Some useful git command line shortcuts
|
@@ -42,17 +42,16 @@ require_paths:
|
|
42
42
|
- lib
|
43
43
|
required_ruby_version: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
49
|
requirements:
|
50
|
-
- -
|
50
|
+
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '0'
|
53
53
|
requirements: []
|
54
|
-
|
55
|
-
rubygems_version: 2.0.14
|
54
|
+
rubygems_version: 3.0.3
|
56
55
|
signing_key:
|
57
56
|
specification_version: 4
|
58
57
|
summary: Some useful git command line shortcuts
|