svnauto 1.0.1 → 1.0.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.
- data/TODO +3 -4
- data/lib/sc/command.rb +6 -0
- data/lib/sc/commands/bug.rb +14 -0
- data/lib/sc/commands/config.rb +1 -1
- data/lib/sc/constants.rb +1 -1
- data/lib/sc/dispatcher.rb +10 -0
- data/lib/sc/project.rb +15 -4
- data/lib/sc/repository.rb +27 -3
- data/lib/sc/svn.rb +5 -0
- data/lib/sc.rb +1 -0
- metadata +2 -2
data/TODO
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
= To Do List
|
2
2
|
|
3
|
-
== Before Version 1.0.0
|
4
|
-
|
5
|
-
* Create the intro screencast
|
6
|
-
|
7
3
|
== Future Versions
|
8
4
|
|
5
|
+
* Add reporting tool to report on things such as what bug fixes
|
6
|
+
went into which releases
|
7
|
+
* More advanced merging
|
9
8
|
* Support letters in version numbers, like 1.1.1a
|
data/lib/sc/command.rb
CHANGED
@@ -80,6 +80,12 @@ module SC
|
|
80
80
|
instance_eval { @opthash.clear }
|
81
81
|
end
|
82
82
|
|
83
|
+
################################################################################
|
84
|
+
# Was the --force option given to the command?
|
85
|
+
def self.force?
|
86
|
+
instance_eval { @opthash[:force] }
|
87
|
+
end
|
88
|
+
|
83
89
|
################################################################################
|
84
90
|
protected
|
85
91
|
|
data/lib/sc/commands/bug.rb
CHANGED
@@ -43,6 +43,10 @@ module SC
|
|
43
43
|
opthash[:close] = true
|
44
44
|
end
|
45
45
|
|
46
|
+
option('-d', '--diff', "Show the changes for the given bug fix") do |val, opthash|
|
47
|
+
opthash[:diff] = true
|
48
|
+
end
|
49
|
+
|
46
50
|
option('-t', '--no-trunk', "Don't merge bug fix to the trunk") do |val, opthash|
|
47
51
|
opthash[:no_trunk] = true
|
48
52
|
end
|
@@ -56,6 +60,11 @@ module SC
|
|
56
60
|
raise "bug id should be an integer: #{@bug_id}"
|
57
61
|
end
|
58
62
|
|
63
|
+
if opthash[:diff]
|
64
|
+
show_diff
|
65
|
+
return
|
66
|
+
end
|
67
|
+
|
59
68
|
@version =
|
60
69
|
if opthash[:release]
|
61
70
|
Version.new(opthash[:release])
|
@@ -153,6 +162,11 @@ module SC
|
|
153
162
|
end
|
154
163
|
end
|
155
164
|
end
|
165
|
+
|
166
|
+
################################################################################
|
167
|
+
def show_diff
|
168
|
+
Svn.diff(@project.tags("bug/PRE-#@bug_id"), @project.tags("bug/POST-#@bug_id"))
|
169
|
+
end
|
156
170
|
|
157
171
|
end
|
158
172
|
################################################################################
|
data/lib/sc/commands/config.rb
CHANGED
@@ -35,7 +35,7 @@ module SC
|
|
35
35
|
################################################################################
|
36
36
|
option('-a', '--add', 'Add a repository') do |val, hash|
|
37
37
|
config = ConfigFile.new
|
38
|
-
config[:repositories] << Repository.ask
|
38
|
+
config[:repositories] << Repository.ask(config)
|
39
39
|
config.save
|
40
40
|
end
|
41
41
|
|
data/lib/sc/constants.rb
CHANGED
@@ -26,7 +26,7 @@ module SC
|
|
26
26
|
module Constants
|
27
27
|
################################################################################
|
28
28
|
# The version number for this copy of SC
|
29
|
-
VERSION = '1.0.
|
29
|
+
VERSION = '1.0.2'
|
30
30
|
|
31
31
|
################################################################################
|
32
32
|
# What to call myself
|
data/lib/sc/dispatcher.rb
CHANGED
@@ -121,6 +121,13 @@ module SC
|
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
124
|
+
# make sure the selected repository is in the config file
|
125
|
+
if !klass.without_repository and !config.find_repository(@project.repository.name)
|
126
|
+
error = "the selected repository (#{@project.repository.url}) is not in the configuration file, "
|
127
|
+
error << "please use the 'sc config --add' command to add it first."
|
128
|
+
raise error
|
129
|
+
end
|
130
|
+
|
124
131
|
process(klass, subcommand_options, @project)
|
125
132
|
end
|
126
133
|
|
@@ -151,6 +158,9 @@ module SC
|
|
151
158
|
command_extras = klass.options.order!(options)
|
152
159
|
return unless klass.instance_methods.include?('run')
|
153
160
|
|
161
|
+
# make sure the project object is ready
|
162
|
+
project.prepare(klass.force?)
|
163
|
+
|
154
164
|
if klass.args_min and command_extras.length < klass.args_min
|
155
165
|
puts usage_for(klass)
|
156
166
|
exit 1
|
data/lib/sc/project.rb
CHANGED
@@ -72,6 +72,12 @@ module SC
|
|
72
72
|
@repository = options[:repository]
|
73
73
|
end
|
74
74
|
|
75
|
+
################################################################################
|
76
|
+
# make sure the project is ready to be used
|
77
|
+
def prepare (force)
|
78
|
+
@repository.prepare(force) if @repository
|
79
|
+
end
|
80
|
+
|
75
81
|
################################################################################
|
76
82
|
# get the URL to this project
|
77
83
|
def url
|
@@ -209,14 +215,19 @@ module SC
|
|
209
215
|
|
210
216
|
Dir.chdir(dir) do
|
211
217
|
conflicts = false
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
218
|
+
Svn.merge(start_tag, end_tag)
|
219
|
+
|
220
|
+
# test to make sure there are no conflicts
|
221
|
+
Svn.status do |line|
|
222
|
+
if line.match(/^\s*C/)
|
223
|
+
conflicts = true
|
224
|
+
Constants::TERMINAL.say(Constants::TERMINAL.color("MERGE CONFLICT: #{line.chomp}", :red))
|
225
|
+
end
|
216
226
|
end
|
217
227
|
|
218
228
|
if conflicts
|
219
229
|
message = "merge failed, you need to resolve conflicts in #{dir} "
|
230
|
+
message << "(use 'svn status' to see files with conflicts) "
|
220
231
|
message << yield if block_given?
|
221
232
|
raise message
|
222
233
|
end
|
data/lib/sc/repository.rb
CHANGED
@@ -43,11 +43,17 @@ module SC
|
|
43
43
|
|
44
44
|
################################################################################
|
45
45
|
# Prompt the user to enter the necessary attributes for a repository
|
46
|
-
def self.ask
|
46
|
+
def self.ask (config=nil)
|
47
47
|
options = {}
|
48
48
|
|
49
49
|
options[:name] = Constants::TERMINAL.ask("Repository Name (used with sc -r): ")
|
50
|
-
|
50
|
+
|
51
|
+
options[:url] = Constants::TERMINAL.ask("Repository URL: ") do |question|
|
52
|
+
if config
|
53
|
+
project = Project.from_cwd(config)
|
54
|
+
question.default = project.repository.url unless project.repository.nil?
|
55
|
+
end
|
56
|
+
end
|
51
57
|
|
52
58
|
url = URI.parse(options[:url])
|
53
59
|
if url.scheme.nil? and Constants::TERMINAL.agree("Repository URL is missing protocol, assume it's local? ")
|
@@ -68,7 +74,9 @@ module SC
|
|
68
74
|
q.default = default_workspace(options[:name])
|
69
75
|
end
|
70
76
|
|
71
|
-
self.new(options)
|
77
|
+
repository = self.new(options)
|
78
|
+
repository.prepare(false)
|
79
|
+
repository
|
72
80
|
end
|
73
81
|
|
74
82
|
################################################################################
|
@@ -91,6 +99,22 @@ module SC
|
|
91
99
|
@options = options[:options]
|
92
100
|
end
|
93
101
|
|
102
|
+
################################################################################
|
103
|
+
# make sure the repository is ready to use
|
104
|
+
def prepare (force)
|
105
|
+
workspace_dir = workspace()
|
106
|
+
|
107
|
+
unless File.exist?(workspace_dir)
|
108
|
+
question = "Create workspace "
|
109
|
+
question << Constants::TERMINAL.color(workspace_dir, :green)
|
110
|
+
question << "? "
|
111
|
+
|
112
|
+
if force or Constants::TERMINAL.agree(question)
|
113
|
+
Pathname.new(workspace_dir).mkpath
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
94
118
|
################################################################################
|
95
119
|
# get the full path for the workspace
|
96
120
|
def workspace
|
data/lib/sc/svn.rb
CHANGED
@@ -24,6 +24,11 @@
|
|
24
24
|
################################################################################
|
25
25
|
module SC
|
26
26
|
class Svn
|
27
|
+
################################################################################
|
28
|
+
# Since we're using regexes, we can only support one language, so we pick
|
29
|
+
# English. This setting forces svn to output English.
|
30
|
+
ENV['LC_MESSAGES'] = 'C'
|
31
|
+
|
27
32
|
################################################################################
|
28
33
|
# Run a svn subcommand
|
29
34
|
def self._svn (*args)
|
data/lib/sc.rb
CHANGED
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: svnauto
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.0.
|
7
|
-
date: 2006-11-
|
6
|
+
version: 1.0.2
|
7
|
+
date: 2006-11-10 00:00:00 -07:00
|
8
8
|
summary: Wrapper around svn for automating complex tasks
|
9
9
|
require_paths:
|
10
10
|
- lib
|