svn2git 2.2.5 → 2.3.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 +4 -4
- data/ChangeLog.markdown +9 -0
- data/Rakefile +1 -0
- data/VERSION.yml +2 -2
- data/lib/svn2git/migration.rb +69 -11
- data/svn2git.gemspec +6 -3
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b945b1a4df0af0d51a1c7d5662528c79975bf8c
|
4
|
+
data.tar.gz: 0ce18a7123508f6368250867884714cfa0589865
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7262ee9fedddbdc47119bfba8e4aee8373bac52c6dec3ffccb50346697936ed6e2cc65a9a0d9b4aef16b0975dc1c545412d77b40dec750e85838bc2ce7980299
|
7
|
+
data.tar.gz: aa518ed21531bc16d70ab39f48af4d78b4e2e651e1c2271c7f3d0b2f395b94d33c9393ea2e0cdd26af35cf46f0be61b077c2b708b61d887730f3926e696f8c82
|
data/ChangeLog.markdown
CHANGED
@@ -1,4 +1,13 @@
|
|
1
|
+
# 2.3.0 - 2014-05-14
|
2
|
+
This release passes STDIN through to the underlying git-svn process, allowing users to interact with the
|
3
|
+
git-svn prompt. Principally, it will allow users to choose what to do when prompted about unverified
|
4
|
+
SSL certificates.
|
5
|
+
|
6
|
+
* Pass STDIN through to the underlying git-svn process so users can respond to prompts.
|
7
|
+
|
1
8
|
# 2.2.5 - 2014-03-09
|
9
|
+
This is a bugfix release. It improves handling of quotes in SVN commit messages.
|
10
|
+
|
2
11
|
|
3
12
|
* Fixed an with single quote escaping (thanks aucl).
|
4
13
|
* Escape double quotes (e.g., if they appear in a commit message) before passing to the shell (thanks aucl).
|
data/Rakefile
CHANGED
data/VERSION.yml
CHANGED
data/lib/svn2git/migration.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'optparse'
|
2
2
|
require 'pp'
|
3
|
+
require 'open4'
|
4
|
+
require 'timeout'
|
3
5
|
|
4
6
|
module Svn2Git
|
5
7
|
DEFAULT_AUTHORS_FILE = "~/.svn2git/authors"
|
@@ -340,23 +342,79 @@ module Svn2Git
|
|
340
342
|
log "Running command: #{cmd}"
|
341
343
|
|
342
344
|
ret = ''
|
345
|
+
@mutex ||= Mutex.new
|
346
|
+
@stdin_queue ||= Queue.new
|
347
|
+
|
348
|
+
# We need to fetch input from the user to pass through to the underlying sub-process. We'll constantly listen
|
349
|
+
# for input and place any received values on a queue for consumption by a pass-through thread that will forward
|
350
|
+
# the contents to the underlying sub-process's stdin pipe.
|
351
|
+
@stdin_thread ||= Thread.new do
|
352
|
+
loop { @stdin_queue << $stdin.gets.chomp }
|
353
|
+
end
|
343
354
|
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
end
|
351
|
-
else
|
355
|
+
# Open4 forks, which JRuby doesn't support. But JRuby added a popen4-compatible method on the IO class,
|
356
|
+
# so we can use that instead.
|
357
|
+
status = (defined?(JRUBY_VERSION) ? IO : Open4).popen4(cmd) do |pid, stdin, stdout, stderr|
|
358
|
+
threads = []
|
359
|
+
|
360
|
+
threads << Thread.new(stdout) do |stdout|
|
352
361
|
stdout.each do |line|
|
353
|
-
|
354
|
-
|
362
|
+
@mutex.synchronize do
|
363
|
+
ret << line
|
364
|
+
|
365
|
+
if printout_output
|
366
|
+
$stdout.print line
|
367
|
+
else
|
368
|
+
log line
|
369
|
+
end
|
370
|
+
end
|
371
|
+
end
|
372
|
+
end
|
373
|
+
|
374
|
+
threads << Thread.new(stderr) do |stderr|
|
375
|
+
# git-svn seems to do all of its prompting for user input via STDERR. When it prompts for input, it will
|
376
|
+
# not terminate the line with a newline character, so we can't split the input up by newline. It will,
|
377
|
+
# however, use a space to separate the user input from the prompt. So we split on word boundaries here
|
378
|
+
# while draining STDERR.
|
379
|
+
stderr.each(' ') do |word|
|
380
|
+
@mutex.synchronize do
|
381
|
+
ret << word
|
382
|
+
|
383
|
+
if printout_output
|
384
|
+
$stdout.print word
|
385
|
+
else
|
386
|
+
log word
|
387
|
+
end
|
388
|
+
end
|
389
|
+
end
|
390
|
+
end
|
391
|
+
|
392
|
+
# Simple pass-through thread to take anything the user types via STDIN and passes it through to the
|
393
|
+
# sub-process's stdin pipe.
|
394
|
+
Thread.new(stdin) do |stdin|
|
395
|
+
loop do
|
396
|
+
user_reply = @stdin_queue.pop
|
397
|
+
|
398
|
+
# nil is our cue to stop looping (pun intended).
|
399
|
+
break if user_reply.nil?
|
400
|
+
|
401
|
+
stdin.puts user_reply
|
402
|
+
stdin.close
|
355
403
|
end
|
356
404
|
end
|
405
|
+
|
406
|
+
threads.each(&:join)
|
407
|
+
|
408
|
+
# Push nil to the stdin_queue to gracefully exit the STDIN pass-through thread.
|
409
|
+
@stdin_queue << nil
|
357
410
|
end
|
358
411
|
|
359
|
-
|
412
|
+
# JRuby's open4 doesn't return a Process::Status object when invoked with a block, but rather returns the
|
413
|
+
# block expression's value. The Process::Status is stored as $?, so we need to normalize the status
|
414
|
+
# object if on JRuby.
|
415
|
+
status = $? if defined?(JRUBY_VERSION)
|
416
|
+
|
417
|
+
if exit_on_error && (status.exitstatus != 0)
|
360
418
|
$stderr.puts "command failed:\n#{cmd}"
|
361
419
|
exit -1
|
362
420
|
end
|
data/svn2git.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: svn2git 2.
|
5
|
+
# stub: svn2git 2.3.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "svn2git"
|
9
|
-
s.version = "2.
|
9
|
+
s.version = "2.3.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["James Coglan", "Kevin Menard"]
|
14
|
-
s.date = "2014-
|
14
|
+
s.date = "2014-05-14"
|
15
15
|
s.email = "nirvdrum@gmail.com"
|
16
16
|
s.executables = ["svn2git"]
|
17
17
|
s.extra_rdoc_files = [
|
@@ -40,11 +40,14 @@ Gem::Specification.new do |s|
|
|
40
40
|
|
41
41
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
42
42
|
s.add_development_dependency(%q<test-unit>, [">= 0"])
|
43
|
+
s.add_runtime_dependency(%q<open4>, [">= 0"])
|
43
44
|
else
|
44
45
|
s.add_dependency(%q<test-unit>, [">= 0"])
|
46
|
+
s.add_dependency(%q<open4>, [">= 0"])
|
45
47
|
end
|
46
48
|
else
|
47
49
|
s.add_dependency(%q<test-unit>, [">= 0"])
|
50
|
+
s.add_dependency(%q<open4>, [">= 0"])
|
48
51
|
end
|
49
52
|
end
|
50
53
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: svn2git
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Coglan
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-05-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: test-unit
|
@@ -25,6 +25,20 @@ dependencies:
|
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: open4
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
28
42
|
description:
|
29
43
|
email: nirvdrum@gmail.com
|
30
44
|
executables:
|