svn-command 0.2.12 → 0.2.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,7 +5,7 @@ module Project
5
5
  PrettyName = "Enhanced Subversion Command"
6
6
  Name = "svn-command"
7
7
  RubyForgeName = "svn-command"
8
- Version = "0.2.12"
8
+ Version = "0.2.15"
9
9
  Specification = Gem::Specification.new do |s|
10
10
  s.name = Project::Name
11
11
  s.summary = "A nifty wrapper command for Subversion's command-line svn client"
@@ -18,7 +18,7 @@ module Project
18
18
  s.homepage = "http://#{Project::RubyForgeName}.rubyforge.org/"
19
19
  s.rubyforge_project = Project::Name
20
20
  s.platform = Gem::Platform::RUBY
21
- s.add_dependency("termios")
21
+ #s.add_dependency("termios") # No longer _required_, but highly recommended.
22
22
  s.add_dependency("colored")
23
23
  s.add_dependency("escape")
24
24
  s.add_dependency("facets")
@@ -26,7 +26,9 @@ module Project
26
26
  s.add_dependency("rscm")
27
27
  s.post_install_message = <<-End
28
28
  ---------------------------------------------------------------------------------------------------
29
- Please run sudo /usr/bin/_svn_command_post_install to finalize the installation.
29
+ IMPORTANT: Please run sudo /usr/bin/_svn_command_post_install to finalize the installation.
30
+
31
+ Also, it is highly recommended that you install the termios gem, but it will work without it.
30
32
  ---------------------------------------------------------------------------------------------------
31
33
  End
32
34
 
data/Readme CHANGED
@@ -16,13 +16,13 @@ This is a replacement <b><tt>svn</tt> command-line client</b> meant to be used i
16
16
 
17
17
  === Dependencies
18
18
 
19
- * termios
20
19
  * colored
21
20
  * escape
22
21
  * facets
23
22
  * extensions
24
23
  * qualitysmith_extensions
25
24
  * rscm
25
+ * termios (recommended, but no longer required)
26
26
 
27
27
  === Installation: Once per _system_
28
28
 
@@ -69,16 +69,25 @@ module Subversion
69
69
  raise NotImplementedError
70
70
  end
71
71
 
72
- # Adds the given repo URL (http://svn.yourcompany.com/path/to/something) as an svn:externals.
72
+ # Adds the given repository URL (http://svn.yourcompany.com/path/to/something) as an svn:externals.
73
73
  #
74
74
  # Options may include:
75
75
  # * +:as+ - overrides the default behavior of naming the checkout based on the last component of the repo path
76
- # * +:local_path+ - specifies where to set the externals property. Defaults to './'
76
+ # * +:local_path+ - specifies where to set the externals property. Defaults to '.' or the dirname of +as+ if +as+ is specified
77
+ # (for example, <tt>vendor/plugins</tt> if +as+ is <tt>vendor/plugins/plugin_name</tt>).
77
78
  #
78
79
  def self.externalize(repo_url, options = {})
79
- options[:local_path] ||= './'
80
+
80
81
  options[:as] ||= File.basename(repo_url)
81
- options[:as] = options[:as].ljust(29)
82
+ #options[:as] = options[:as].ljust(29)
83
+
84
+ # You can't set the externals of './' to 'vendor/plugins/foo http://example.com/foo'
85
+ # Instead, you have to set the externals of 'vendor/plugins/' to 'foo http://example.com/foo'
86
+ # This will make that correction for you automatically.
87
+ options[:local_path] ||= File.dirname(options[:as]) # Will be '.' if options[:as] has no dirname component.
88
+ # Will be 'vendor/plugins' if options[:as] is 'vendor/plugins/plugin_name'.
89
+ options[:as] = File.basename(options[:as])
90
+
82
91
  add_to_property 'externals', options[:local_path], "#{options[:as]} #{repo_url}"
83
92
  end
84
93
 
@@ -208,6 +217,11 @@ module Subversion
208
217
  DiffsParser.new(raw_diffs).parse
209
218
  end
210
219
 
220
+ def self.cat(*args)
221
+ args = ['./'] if args.empty?
222
+ execute("cat #{args.join ' '}")
223
+ end
224
+
211
225
  # It's easy to get/set properties, but less easy to add to a property. This method uses get/set to simulate add.
212
226
  # It will uniquify lines, removing duplicates. (:todo: what if we want to set a property to have some duplicate lines?)
213
227
  def self.add_to_property(property, path, *new_lines)
@@ -254,7 +268,7 @@ module Subversion
254
268
  execute("proplist --revprop -r #{rev}")
255
269
  end
256
270
  # Returns an array of the names of all revision properties currently set on the given +rev+
257
- # Tested by: ../../test/subversion_test.rb:test_revision_properties_names
271
+ # Tessted by: ../../test/subversion_test.rb:test_revision_properties_names
258
272
  def self.revision_properties_names(rev)
259
273
  raw_list = proplist(rev)
260
274
  raw_list.scan(/^ +([^ ]+)$/).map { |matches|
@@ -262,7 +276,7 @@ module Subversion
262
276
  }
263
277
  end
264
278
  # Returns an array of RevisionProperty objects (name, value) for revisions currently set on the given +rev+
265
- # Tested by: ../../test/subversion_test.rb:test_revision_properties
279
+ # Tessted by: ../../test/subversion_test.rb:test_revision_properties
266
280
  def self.revision_properties(rev)
267
281
  revision_properties_names(rev).map { |property_name|
268
282
  RevisionProperty.new(property_name, get_revision_property(property_name, rev))
@@ -502,7 +516,7 @@ module Subversion
502
516
  [
503
517
  entries_structs.map { |entry|
504
518
  entry.name.size
505
- }.max,
519
+ }.max.to_i,
506
520
  25
507
521
  ].max
508
522
 
@@ -14,6 +14,7 @@ require 'facets/core/string/index_all'
14
14
  require 'facets/core/string/to_re'
15
15
  require 'facets/core/string/to_rx'
16
16
  require 'facets/core/symbol/to_proc'
17
+ require 'facets/core/kernel/in'
17
18
 
18
19
  gem 'qualitysmith_extensions', '>=0.0.3'
19
20
  require 'qualitysmith_extensions/enumerable/enum'
@@ -27,8 +28,7 @@ require 'qualitysmith_extensions/module/attribute_accessors'
27
28
  require 'English'
28
29
  require 'pp'
29
30
  require 'stringio'
30
- gem 'termios'
31
- require 'termios'
31
+
32
32
  gem 'colored'
33
33
  require 'colored' # Lets us do "a".white.bold instead of "\033[1ma\033[0m"
34
34
 
@@ -36,23 +36,33 @@ require_local '../../ProjectInfo'
36
36
  require_local 'subversion'
37
37
  require_local 'subversion_extensions'
38
38
 
39
+
39
40
  begin
40
- # Set up termios so that it returns immediately when you press a key.
41
- # (http://blog.rezra.com/articles/2005/12/05/single-character-input)
42
- t = Termios.tcgetattr(STDIN)
43
- save_terminal_attributes = t.dup
44
- t.lflag &= ~Termios::ICANON
45
- Termios.tcsetattr(STDIN, 0, t)
46
- rescue RuntimeError => exception # Necessary for automated testing.
47
- if exception.message =~ /can't get terminal parameters/
48
- puts 'Warning: Terminal not found.'
49
- $interactive = false
50
- else
51
- raise
41
+ gem 'termios'
42
+ require 'termios'
43
+ begin
44
+ # Set up termios so that it returns immediately when you press a key.
45
+ # (http://blog.rezra.com/articles/2005/12/05/single-character-input)
46
+ t = Termios.tcgetattr(STDIN)
47
+ save_terminal_attributes = t.dup
48
+ t.lflag &= ~Termios::ICANON
49
+ Termios.tcsetattr(STDIN, 0, t)
50
+
51
+ # Set terminal_attributes back to how we found them...
52
+ at_exit { Termios.tcsetattr(STDIN, 0, save_terminal_attributes) }
53
+ rescue RuntimeError => exception # Necessary for automated testing.
54
+ if exception.message =~ /can't get terminal parameters/
55
+ puts 'Warning: Terminal not found.'
56
+ $interactive = false
57
+ else
58
+ raise
59
+ end
52
60
  end
61
+ $termios_loaded = true
62
+ rescue Gem::LoadError
63
+ $termios_loaded = false
53
64
  end
54
65
 
55
- begin # Reset terminal_attributes
56
66
 
57
67
  module Kernel
58
68
  # Simply to allow us to override it
@@ -66,6 +76,29 @@ class Object
66
76
  def nonnil?; !nil?; end
67
77
  end
68
78
 
79
+ class IO
80
+ # Gets a single character, as a string.
81
+ # Adjusts for the different behavior of getc if we are using termios to get it to return immediately when you press a single key
82
+ # or if they are not using that behavior and thus have to press Enter after their single key.
83
+ def getch
84
+ response = getc
85
+ if !$termios_loaded
86
+ next_char = getc
87
+ new_line_characters_expected = ["\n"]
88
+ #new_line_characters_expected = ["\n", "\r"] if windows?
89
+ if next_char.chr.in?(new_line_characters_expected)
90
+ # Eat the newline character
91
+ else
92
+ # Don't eat it
93
+ # (This case is necessary, for escape sequences, for example, where they press only one key, but it produces multiple characters.)
94
+ $stdin.ungetc(next_char)
95
+ end
96
+ end
97
+ response.chr
98
+ end
99
+ end
100
+
101
+
69
102
  class String
70
103
  # Makes the first character bold and underlined. Makes the whole string of the given color.
71
104
  # :todo: Move out to extensions/console/menu_item
@@ -96,7 +129,7 @@ def confirm(question, options = ['Yes', 'No'])
96
129
  " > "
97
130
  response = ''
98
131
  # Currently allow user to press Enter to accept the default.
99
- response = $stdin.getc.chr.downcase while !['y', 'n', "\n"].include?(begin response.downcase!; response end)
132
+ response = $stdin.getch.downcase while !['y', 'n', "\n"].include?(begin response.downcase!; response end)
100
133
  response
101
134
  end
102
135
 
@@ -367,14 +400,13 @@ module Subversion
367
400
  # http://svn.collab.net/repos/svn/trunk/doc/user/svn-best-practices.html:
368
401
  # After every svn commit, your working copy has mixed revisions. The things you just committed are now at the HEAD revision, and everything else is at an older revision.
369
402
  #puts "Whenever you commit something, strangely, your working copy becomes out of date (as you can observe if you run svn info and look at the revision number). This is a problem for svn log, and piston, to name two applications. So we will now update '#{(args.every + '/..').join(' ').white.bold}' just to make sure they're not out of date..."
370
- print ''.bold # Clear the bold flag that svn annoyingly sets
371
- working_copy_root = Subversion.working_copy_root(directory).to_s
403
+ #print ''.bold # Clear the bold flag that svn annoyingly sets
404
+ #working_copy_root = Subversion.working_copy_root(directory).to_s
372
405
  #response = confirm("Do you want to update #{working_copy_root.bold} now? (Any key other than y to skip) ")
373
406
  #if response == 'y'
374
- puts "Updating #{working_copy_root}..."
407
+ #puts "Updating #{working_copy_root} (non-recursively)..."
375
408
  #end
376
-
377
- puts Subversion.update_lines_filter( Subversion.update(*args) )
409
+ #puts Subversion.update_lines_filter( Subversion.update(*args) )
378
410
  end
379
411
 
380
412
  # Ideas:
@@ -483,7 +515,6 @@ module Subversion
483
515
  puts output.string
484
516
  end
485
517
  end unless @ignore_externals || @non_recursive
486
- # :todo: or @non_recursive (but that's currently a passthrough option that doesn't set @non_recursive)
487
518
  end
488
519
 
489
520
  #-----------------------------------------------------------------------------------------------------------------------------
@@ -615,10 +646,6 @@ End
615
646
  alias_method :_p, :__parents
616
647
  end
617
648
 
618
- # Unlike the built-in move, this one lets you list multiple source files
619
- # Source... DestinationDir
620
- # or
621
- # Source Destination
622
649
  def move(*args)
623
650
  destination = args.pop
624
651
 
@@ -649,6 +676,13 @@ End
649
676
  puts "Creating parent directory '#{destination_dir}'..."
650
677
  self.mkdir destination_dir # @create_parents flag will be reused there
651
678
  end
679
+
680
+ # Unlike the built-in move, this one lets you list multiple source files
681
+ # Source... DestinationDir
682
+ # or
683
+ # Source Destination
684
+ # Useful when you have a long list of files you want to move, such as when you are using wild-cards. Makes commands like this possible:
685
+ # svn mv source/* dest/
652
686
  if args.length >= 2
653
687
  sources = args
654
688
 
@@ -661,6 +695,39 @@ End
661
695
  end
662
696
  alias_subcommand :mv => :move
663
697
 
698
+ #-----------------------------------------------------------------------------------------------------------------------------
699
+ module Copy
700
+ Console::Command.pass_through({
701
+ [:_r, :__revision] => 1, # :todo: support "{" DATE "}" format
702
+ [:_q, :__quiet] => 0,
703
+ [:__force] => 0,
704
+ }.
705
+ merge(SvnCommand::C_standard_remote_command_options).
706
+ merge(SvnCommand::C_standard_commitable_command_options), self
707
+ )
708
+ end
709
+
710
+ def copy(*args)
711
+ destination = args.pop
712
+
713
+ # Unlike the built-in copy, this one lets you list multiple source files
714
+ # Source... DestinationDir
715
+ # or
716
+ # Source Destination
717
+ # Useful when you have a long list of files you want to copy, such as when you are using wild-cards. Makes commands like this possible:
718
+ # svn cp source/* dest/
719
+ if args.length >= 2
720
+ sources = args
721
+
722
+ sources.each do |source|
723
+ puts filtered_svn('copy', source, destination)
724
+ end
725
+ else
726
+ svn :exec, 'copy', *(args + [destination])
727
+ end
728
+ end
729
+ alias_subcommand :cp => :copy
730
+
664
731
  #-----------------------------------------------------------------------------------------------------------------------------
665
732
  module Import
666
733
  Console::Command.pass_through({
@@ -710,17 +777,29 @@ End
710
777
  def __ignore_externals; @ignore_externals = true; end
711
778
  def __include_externals; @ignore_externals = false; end
712
779
  def __with_externals; @ignore_externals = false; end
780
+ alias_method :_ie, :__ignore_externals
781
+ alias_method :_skip_externals, :__ignore_externals
713
782
 
714
783
  def ignore_externals?
715
784
  @ignore_externals.nonnil? ?
716
785
  @ignore_externals :
717
786
  (user_preferences['update'] && user_preferences['update']['ignore_externals'])
718
787
  end
788
+
789
+ # Duplicated with Diff
790
+ def __non_recursive
791
+ @non_recursive = true
792
+ @passthrough_options << '--non-recursive'
793
+ end
794
+ alias_method :_N, :__non_recursive
795
+
719
796
  end
720
797
 
721
798
  def update(*args)
722
- @passthrough_options << '--non-recursive' if ignore_externals?
723
- puts Subversion.update_lines_filter( Subversion.update(*prepare_args(args)) )
799
+ @passthrough_options << '--ignore-externals' if ignore_externals?
800
+ Subversion.print_commands! do # Print the commands and options used so they can be reminded that they're using user_preferences['update']['ignore_externals']...
801
+ puts Subversion.update_lines_filter( Subversion.update(*prepare_args(args)) )
802
+ end
724
803
  end
725
804
 
726
805
 
@@ -872,8 +951,7 @@ End
872
951
  "or " + "any other key".white.bold + " to do nothing > "
873
952
  )
874
953
  response = ""
875
- response = $stdin.getc.chr.downcase # while !['a', 'd', 'i', "\n"].include?(begin response.downcase!; response end)
876
-
954
+ response = $stdin.getch.downcase # while !['a', 'd', 'i', "\n"].include?(begin response.downcase!; response end)
877
955
 
878
956
  case response
879
957
  when 'a'
@@ -890,7 +968,6 @@ End
890
968
  response = "y"
891
969
  end
892
970
 
893
- puts "response=#{response}"
894
971
  if response == 'y'
895
972
  print "\nDeleting... "
896
973
  FileUtils.rm_rf file
@@ -954,18 +1031,18 @@ End
954
1031
  longest_path_name,
955
1032
  entries_structs.map { |entry|
956
1033
  entry.path.size
957
- }.max
1034
+ }.max.to_i
958
1035
  ].max
959
1036
  end
960
1037
  end
961
1038
 
962
- puts '(Use the -o/--omit-repository-path option if you just want the external paths/names without the repository paths)' unless @omit_repository_path
963
1039
  puts externals_structs.map { |entries_structs|
964
1040
  entries_structs.map { |entry|
965
1041
  entry.path.ljust(longest_path_name + 1) +
966
1042
  (@omit_repository_path ? '' : entry.repository_path)
967
1043
  }
968
1044
  }
1045
+ puts "(Tip: Also consider using svn externals_outline. Or use the -o/--omit-repository-path option if you just want a list of the paths that are externalled (without the repository URLs that they come from)".magenta unless @omit_repository_path
969
1046
  end
970
1047
  alias_subcommand :ei => :externals_items
971
1048
  alias_subcommand :externals_list => :externals_items
@@ -1215,7 +1292,7 @@ End
1215
1292
  # It's possible for a working copy to get "out of date" (even if you were the last committer!), in which case svn log will
1216
1293
  # only list revisions up to that revision (actually looks like it only goes up to and including Last Changed Rev: 2838,
1217
1294
  # not Revision: 2839, as reported by svn info...)
1218
- if revision_of_directory < head
1295
+ if revision_of_directory and head and revision_of_directory < head
1219
1296
  puts "The working copy '#{directory.white.bold}' appears to be out-of-date (#{revision_of_directory}) with respect to the head revision (#{head}). Updating..."
1220
1297
  Subversion.update(directory)
1221
1298
  end
@@ -1274,13 +1351,13 @@ End
1274
1351
  # Get response from user and then act on it
1275
1352
  begin # rescue
1276
1353
  response = ""
1277
- response = $stdin.getc.chr.downcase
1354
+ response = $stdin.getch.downcase
1278
1355
 
1279
1356
  # Escape sequence such as the up arrow key ("\e[A")
1280
1357
  if response == "\e"
1281
- response << (next_char = $stdin.getc.chr)
1358
+ response << (next_char = $stdin.getch)
1282
1359
  if next_char == '['
1283
- response << (next_char = $stdin.getc.chr)
1360
+ response << (next_char = $stdin.getch)
1284
1361
  end
1285
1362
  end
1286
1363
 
@@ -1311,8 +1388,11 @@ End
1311
1388
  print 'Grep for'.bold + ' (Case sensitive; Regular expressions ' + 'like.*this'.bold.blue + ' allowed, but not ' + '/like.*this/im'.bold.blue + ') (backspace not currently supported): '
1312
1389
  search_pattern = $stdin.gets.chomp.to_rx
1313
1390
  puts((' '*100).green.underline)
1314
- puts "Searching `svn diff #{revs_to_compare.min}:#{revs_to_compare.max}` for #{search_pattern.to_s}... ".bold
1315
- diffs = Subversion.diffs(directory, '-r', "#{revs_to_compare.min}:#{revs_to_compare.max}")
1391
+ puts "Searching `svn diff #{directory} -r #{revs_to_compare.min}:#{revs_to_compare.max}` for #{search_pattern.to_s}... ".bold
1392
+ diffs = nil
1393
+ Subversion.print_commands! do
1394
+ diffs = Subversion.diffs(directory, '-r', "#{revs_to_compare.min}:#{revs_to_compare.max}")
1395
+ end
1316
1396
 
1317
1397
  hits = 0
1318
1398
  diffs.each do |filename, diff|
@@ -1332,6 +1412,29 @@ End
1332
1412
  end
1333
1413
  show_revision_again = false
1334
1414
 
1415
+ when 'a' # Grep the cat
1416
+ puts
1417
+ print 'Grep for'.bold + ' (Case sensitive; Regular expressions ' + 'like.*this'.bold.blue + ' allowed, but not ' + '/like.*this/im'.bold.blue + ') (backspace not currently supported): '
1418
+ search_pattern = $stdin.gets.chomp.to_rx
1419
+ puts((' '*100).green.underline)
1420
+ puts "Searching `svn cat #{directory} -r #{rev}` for #{search_pattern.to_s}... ".bold
1421
+ contents = nil
1422
+ Subversion.print_commands! do
1423
+ contents = Subversion.cat(directory, '-r', rev)
1424
+ end
1425
+
1426
+ if contents =~ search_pattern
1427
+ puts( contents.grep(search_pattern). # This will get us just the interesting *lines* (as an array).
1428
+ map { |line| # Now, for each line...
1429
+ line.highlight_occurences(search_pattern)
1430
+ }
1431
+ )
1432
+ else
1433
+ puts "Search term not found!".red.bold
1434
+ end
1435
+ show_revision_again = false
1436
+
1437
+
1335
1438
  when 'l' # List revision properties
1336
1439
  puts
1337
1440
  puts Subversion::printable_revision_properties(rev)
@@ -1354,12 +1457,11 @@ End
1354
1457
  show_revision_again = false
1355
1458
 
1356
1459
  when 'c' # Cat all files from revision
1357
- puts 'Not implemented yet'
1358
- show_revision_again = false
1359
-
1360
- when 'a' # Grep the cat
1361
- puts 'Not implemented yet'
1362
- show_revision_again = false
1460
+ puts
1461
+ Subversion.print_commands! do
1462
+ puts Subversion.cat(directory, '-r', rev)
1463
+ end
1464
+ show_revision_again = true
1363
1465
 
1364
1466
  when 'r' # Mark as reviewed
1365
1467
  puts
@@ -1464,8 +1566,3 @@ End
1464
1566
  end
1465
1567
  end
1466
1568
  end
1467
-
1468
- ensure
1469
- # Set terminal_attributes back to how we found them...
1470
- Termios.tcsetattr(STDIN, 0, save_terminal_attributes)
1471
- end
@@ -21,10 +21,12 @@ class SubversionTest < Test::Unit::TestCase
21
21
  Subversion.externalize('some/repo/path')
22
22
  Subversion.externalize('some/repo/path', :as => 'foo')
23
23
  Subversion.externalize('some/repo/path', :as => 'foo', :local_path => 'local/path')
24
+ Subversion.externalize('some/repo/path', :as => 'vendor/plugins/foo')
24
25
 
25
- assert_equal "svn propset svn:externals '#{'path'.ljust(29)} some/repo/path' ./", Subversion.executed[1]
26
- assert_equal "svn propset svn:externals '#{'foo'.ljust(29)} some/repo/path' ./", Subversion.executed[3]
27
- assert_equal "svn propset svn:externals '#{'foo'.ljust(29)} some/repo/path' local/path", Subversion.executed[5]
26
+ assert_equal "svn propset svn:externals '#{'path'} some/repo/path' .", Subversion.executed[1] # Used to be 'path'.ljust(29)
27
+ assert_equal "svn propset svn:externals '#{'foo'} some/repo/path' .", Subversion.executed[3]
28
+ assert_equal "svn propset svn:externals '#{'foo'} some/repo/path' local/path", Subversion.executed[5]
29
+ assert_equal "svn propset svn:externals '#{'foo'} some/repo/path' vendor/plugins", Subversion.executed[7]
28
30
  end
29
31
 
30
32
  def test_remove
@@ -232,7 +232,7 @@ end #class SvnStatusTest
232
232
  class SvnUpdateTest < BaseSvnCommandTest
233
233
  def test_1
234
234
  capture_output { SvnCommand.execute("up -q file1 file2 -r 17") }
235
- assert_equal "svn update -q -r 17 --non-recursive file1 file2", Subversion.executed[0]
235
+ assert_equal "svn update -q -r 17 file1 file2", Subversion.executed[0]
236
236
  end
237
237
  end
238
238
 
@@ -382,8 +382,8 @@ class SvnExternalsTest < BaseSvnCommandTest
382
382
  output = capture_output { SvnCommand.execute('externalize http://imaginethat.com/a/repo') }
383
383
  assert_equal '', output
384
384
  assert_equal [
385
- "svn propget svn:externals ./",
386
- "svn propset svn:externals 'repo http://imaginethat.com/a/repo' ./"
385
+ "svn propget svn:externals .",
386
+ "svn propset svn:externals 'repo http://imaginethat.com/a/repo' ."
387
387
  ], Subversion.executed
388
388
  end
389
389
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: svn-command
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.12
7
- date: 2007-06-11 00:00:00 -07:00
6
+ version: 0.2.15
7
+ date: 2007-07-17 00:00:00 -07:00
8
8
  summary: A nifty wrapper command for Subversion's command-line svn client
9
9
  require_paths:
10
10
  - lib
@@ -27,7 +27,9 @@ signing_key:
27
27
  cert_chain:
28
28
  post_install_message: |
29
29
  ---------------------------------------------------------------------------------------------------
30
- Please run sudo /usr/bin/_svn_command_post_install to finalize the installation.
30
+ IMPORTANT: Please run sudo /usr/bin/_svn_command_post_install to finalize the installation.
31
+
32
+ Also, it is highly recommended that you install the termios gem, but it will work without it.
31
33
  ---------------------------------------------------------------------------------------------------
32
34
 
33
35
  authors:
@@ -68,15 +70,6 @@ extensions: []
68
70
  requirements: []
69
71
 
70
72
  dependencies:
71
- - !ruby/object:Gem::Dependency
72
- name: termios
73
- version_requirement:
74
- version_requirements: !ruby/object:Gem::Version::Requirement
75
- requirements:
76
- - - ">"
77
- - !ruby/object:Gem::Version
78
- version: 0.0.0
79
- version:
80
73
  - !ruby/object:Gem::Dependency
81
74
  name: colored
82
75
  version_requirement: