vcsdiff 0.1.3.alpha → 0.1.4

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.
Files changed (2) hide show
  1. data/bin/vcsdiff +48 -8
  2. metadata +5 -5
data/bin/vcsdiff CHANGED
@@ -37,9 +37,10 @@ option_parser = OptionParser.new do |opts|
37
37
  opts.separator 'Options'
38
38
 
39
39
  options[:files] = Array.new
40
- opts.on('-f','--file FILE',Array,'Define the file/files you want to diff',
40
+ opts.on('-f','--file FILE[,FILE]',Array,'Define the file/files you want to diff',
41
41
  '(you can use it more than once',
42
- 'or seperate the filenames with commas)') do |f|
42
+ 'or seperate the filenames with commas)',
43
+ 'If not specified vcsdiff diffs all files in the directory') do |f|
43
44
  options[:files]+=f
44
45
  end
45
46
 
@@ -60,7 +61,13 @@ option_parser = OptionParser.new do |opts|
60
61
  'defaults to vimdiff') do |t|
61
62
  options[:diff]=t
62
63
  end
63
-
64
+
65
+ options[:verbose]=false
66
+ opts.on('-v','--verbose',
67
+ 'Enable verbose printing') do
68
+ options[:verbose]=true
69
+ end
70
+
64
71
  opts.separator ''
65
72
  opts.separator 'Diff options:'
66
73
  opts.separator 'All diff options are passed to svn/git/hg diff'
@@ -81,19 +88,52 @@ rescue OptionParser::InvalidOption, OptionParser::MissingArgument
81
88
  end
82
89
 
83
90
  if not options[:sys]
84
- # TODO: implement auto detection
85
- options[:sys]="svn"
91
+ # Check if it is a svn repository
92
+ %x[svn info 2> /dev/null]
93
+ if ($?.success?)
94
+ options[:sys]="svn"
95
+ end
96
+ end
97
+
98
+ if not options[:sys]
99
+ # Check if it is a git repository
100
+ %x[git status 2> /dev/null]
101
+ if ($?.success?)
102
+ options[:sys]="git"
103
+ end
104
+ end
105
+
106
+ if not options[:sys]
107
+ # Check if it is a svn repository
108
+ %x[hg status 2> /dev/null]
109
+ if ($?.success?)
110
+ options[:sys]="hg"
111
+ end
112
+ end
113
+
114
+ if options[:verbose]
115
+ puts 'Auto-detected ' + options[:sys] + ' version control'
86
116
  end
87
117
 
88
118
  # if the user didn't specify any arguments go through each file in the directory
89
119
  if options[:files].length == 0
90
- # FIXME: works only for svn and hg like this
91
- modified=%x[#{options[:sys]} status 2> /dev/null | grep -e "^[MU]" | awk '{print $2}']
120
+ if options[:sys].eql? "git"
121
+ modified=%x[#{options[:sys]} status 2> /dev/null | grep modified | awk '{print $3}']
122
+ else
123
+ modified=%x[#{options[:sys]} status 2> /dev/null | grep -e "^[MU]" | awk '{print $2}']
124
+ end
92
125
  modified.split(%r[\n]).each do |f|
93
126
  options[:files].push(f) if File.file?(f)
94
127
  end
95
128
  end
96
129
 
130
+ if options[:verbose]
131
+ puts 'Files that are going to be diffed:'
132
+ options[:files].each do |f|
133
+ puts " " + f
134
+ end
135
+ end
136
+
97
137
  patch="/tmp/svnkomp_747_patch"
98
138
  remote=""
99
139
 
@@ -108,7 +148,7 @@ options[:files].each do |f|
108
148
  exit 1;
109
149
  end
110
150
  %x[patch -R -p0 #{remote} #{patch}]
111
- %x[#{options[:diff]} #{remote} #{f} < `tty` > `tty`]
151
+ %x[#{options[:diff]} #{f} #{remote} < `tty` > `tty`]
112
152
  File.delete(remote)
113
153
  end
114
154
 
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vcsdiff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3.alpha
5
- prerelease: 6
4
+ version: 0.1.4
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Foivos Zakkak
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-01 00:00:00.000000000 Z
12
+ date: 2013-01-19 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A ruby gem for inspecting diffs generated by git/svn/hg diff using vim
15
15
  or Kompare
@@ -36,9 +36,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
36
36
  required_rubygems_version: !ruby/object:Gem::Requirement
37
37
  none: false
38
38
  requirements:
39
- - - ! '>'
39
+ - - ! '>='
40
40
  - !ruby/object:Gem::Version
41
- version: 1.3.1
41
+ version: '0'
42
42
  requirements:
43
43
  - patch
44
44
  rubyforge_project: