git-trac 0.0.20071107 → 0.0.20071211
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/lib/git/trac/attachment.rb +11 -2
- data/lib/git/trac/runner.rb +40 -5
- data/lib/git/trac/ticket.rb +4 -1
- metadata +2 -2
data/lib/git/trac/attachment.rb
CHANGED
@@ -89,11 +89,20 @@ module Git
|
|
89
89
|
ticket.repository
|
90
90
|
end
|
91
91
|
|
92
|
+
# Rewrite filenames in a patch to be relative to +root+. For each .. at
|
93
|
+
# the end of +root+, a path is stripped off the original filename. The
|
94
|
+
# rewritten patch is returned as a string.
|
92
95
|
def patch_with_root(root = nil)
|
93
|
-
if root && !root.empty? &&
|
96
|
+
if root && !root.empty? && p_level.zero?
|
94
97
|
patch = ""
|
95
98
|
body.each_line do |line|
|
96
|
-
line.sub!(/^([+-]{3} |Index: )([^\/].*)$/)
|
99
|
+
line.sub!(/^([+-]{3} |Index: )([^\/].*)$/) do
|
100
|
+
head = $1
|
101
|
+
original = File.join(root, $2)
|
102
|
+
while original.sub!(%r{(.*/|^)\.\./[^/]*/},'\\1')
|
103
|
+
end
|
104
|
+
head + original
|
105
|
+
end
|
97
106
|
patch << line
|
98
107
|
end
|
99
108
|
patch
|
data/lib/git/trac/runner.rb
CHANGED
@@ -145,6 +145,9 @@ directory.
|
|
145
145
|
opts.on("--filter PATTERN","only download filenames matching PATTERN") do |pattern|
|
146
146
|
options[:filter] = pattern
|
147
147
|
end
|
148
|
+
opts.on("--root DIR","prefix patch paths with DIR") do |dir|
|
149
|
+
options[:root] = dir
|
150
|
+
end
|
148
151
|
end
|
149
152
|
|
150
153
|
def run
|
@@ -173,9 +176,6 @@ Show a crude ticket summary.
|
|
173
176
|
|
174
177
|
def add_options(opts)
|
175
178
|
require_ticket_number
|
176
|
-
opts.on("--root DIR","apply patches relative to DIR") do |dir|
|
177
|
-
options[:root] = dir
|
178
|
-
end
|
179
179
|
end
|
180
180
|
|
181
181
|
def run
|
@@ -222,10 +222,18 @@ potentially remove conflicted branches first.
|
|
222
222
|
opts.on("--root DIR","apply patches relative to DIR") do |dir|
|
223
223
|
options[:root] = dir
|
224
224
|
end
|
225
|
+
opts.on("--[no-]update","automatically run git-svn fetch") do |bool|
|
226
|
+
options[:update] = bool
|
227
|
+
end
|
225
228
|
end
|
226
229
|
|
227
230
|
def run
|
228
231
|
number = get_ticket_number
|
232
|
+
if options[:update]
|
233
|
+
@repository.in_work_tree do
|
234
|
+
system("git-svn","fetch")
|
235
|
+
end
|
236
|
+
end
|
229
237
|
@repository.ticket(number).fetch(options) do |attachment, branch|
|
230
238
|
if branch
|
231
239
|
puts "#{attachment.filename}: #{branch}"
|
@@ -294,17 +302,44 @@ it against a production trac server.
|
|
294
302
|
|
295
303
|
def add_options(opts)
|
296
304
|
require_ticket_number
|
297
|
-
opts.on("--branch BRANCH", "git diff BRANCH (default trunk)") do |b|
|
305
|
+
opts.on("--branch BRANCH", "git diff BRANCH (default trunk...HEAD)") do |b|
|
298
306
|
options[:branch] = b
|
299
307
|
end
|
300
308
|
opts.on("--description TEXT", "use TEXT as description") do |text|
|
301
309
|
options[:description] = text
|
302
310
|
end
|
311
|
+
opts.on("--[no-]force", "do not prompt before uploading") do |force|
|
312
|
+
options[:force] = force
|
313
|
+
end
|
314
|
+
opts.on("--[no-]update","automatically run git-svn fetch") do |bool|
|
315
|
+
options[:update] = bool
|
316
|
+
end
|
303
317
|
end
|
304
318
|
|
305
319
|
def run
|
306
320
|
number = get_ticket_number
|
307
|
-
if
|
321
|
+
if options[:update]
|
322
|
+
@repository.in_work_tree do
|
323
|
+
system("git-svn","fetch")
|
324
|
+
end
|
325
|
+
end
|
326
|
+
ticket = @repository.ticket(number)
|
327
|
+
if $stdin.tty? && !options[:force]
|
328
|
+
block = lambda do
|
329
|
+
@repository.in_work_tree do
|
330
|
+
system("git-diff", options[:branch] || "trunk...HEAD")
|
331
|
+
end
|
332
|
+
description = "##{number} (#{ticket.csv["summary"]}"
|
333
|
+
cols = ENV["COLUMNS"].to_i
|
334
|
+
cols = 80 if cols.zero?
|
335
|
+
description.sub!(/^(.{#{cols-22}}).{4,}/,"\\1...")
|
336
|
+
print "#{description}) Proceed? [yN] "
|
337
|
+
$stdin.gets[0,1] == "y"
|
338
|
+
end
|
339
|
+
else
|
340
|
+
block = lambda { true }
|
341
|
+
end
|
342
|
+
if uri = ticket.upload_patch(options,&block)
|
308
343
|
puts uri
|
309
344
|
else
|
310
345
|
exit 1
|
data/lib/git/trac/ticket.rb
CHANGED
@@ -104,10 +104,13 @@ module Git
|
|
104
104
|
def upload_patch(options = {})
|
105
105
|
filename = options[:filename] || "#{File.basename(repository.current_checkout)}.patch"
|
106
106
|
# diff = repository.exec("git-diff","#{options[:branch] || "trunk"}...HEAD")
|
107
|
-
diff = repository.exec("git-diff", options[:branch] || "trunk")
|
107
|
+
diff = repository.exec("git-diff", options[:branch] || "trunk...HEAD")
|
108
108
|
return false if diff.empty?
|
109
109
|
# Don't upload the exact same patch that was pulled down
|
110
110
|
return false if repository.generated_commits[repository.rev_parse("HEAD")] == number
|
111
|
+
if block_given? # confirmation block
|
112
|
+
return false if yield(diff) == false
|
113
|
+
end
|
111
114
|
upload_attachment(options[:description], filename, diff)
|
112
115
|
end
|
113
116
|
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: git-trac
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2007-11
|
6
|
+
version: 0.0.20071211
|
7
|
+
date: 2007-12-11 00:00:00 -06:00
|
8
8
|
summary: Interact with trac from a git repository pulled from svn
|
9
9
|
require_paths:
|
10
10
|
- lib
|