vcs 0.4.1 → 0.5.2.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.
- data/NEWS +29 -1
- data/SPEC.gemspec +5 -5
- data/SPEC.yml +9 -7
- data/contrib/emacs-support/vcs.el +11 -0
- data/lib/vcs/add.rb +1 -1
- data/lib/vcs/app.rb +4 -3
- data/lib/vcs/back.rb +1 -1
- data/lib/vcs/changelog.rb +18 -2
- data/lib/vcs/common_commit.rb +94 -49
- data/lib/vcs/conflict.rb +12 -8
- data/lib/vcs/cvs.rb +22 -2
- data/lib/vcs/delete.rb +1 -1
- data/lib/vcs/diff.rb +23 -7
- data/lib/vcs/edit.rb +6 -1
- data/lib/vcs/environment.rb +2 -2
- data/lib/vcs/form.rb +87 -47
- data/lib/vcs/ignore.rb +1 -1
- data/lib/vcs/junk.rb +1 -1
- data/lib/vcs/list.rb +5 -5
- data/lib/vcs/mail.rb +30 -17
- data/lib/vcs/message.rb +10 -9
- data/lib/vcs/opt_parse.rb +3 -2
- data/lib/vcs/script.rb +1 -1
- data/lib/vcs/status.rb +40 -16
- data/lib/vcs/svn.rb +8 -0
- data/lib/vcs/url.rb +1 -1
- data/lib/vcs/vcs.rb +130 -58
- data/lib/vcs/version.rb +10 -0
- metadata +69 -68
- data/SPEC.dyn.yml +0 -10
data/NEWS
CHANGED
@@ -1,4 +1,32 @@
|
|
1
|
-
New in 0.
|
1
|
+
New in 0.5 ...:
|
2
|
+
|
3
|
+
* Add the full CVS support.
|
4
|
+
|
5
|
+
* Add a new_user flag in the configuration, this flag is enable by default
|
6
|
+
and makes vcs be more explicit. To turn of this option add this to your
|
7
|
+
main configuration file (~/.vcs):
|
8
|
+
new_user: false
|
9
|
+
|
10
|
+
* The interactive is now more by default (in non new_user mode):
|
11
|
+
So no question will be asked to you before the commit.
|
12
|
+
To active the interactive mode add this to your main .vcs:
|
13
|
+
interactive: true
|
14
|
+
|
15
|
+
* Add a force option to commit to bypass the unrecognized file rule.
|
16
|
+
|
17
|
+
* Now, just few colors are set by default. To have your full colored vcs
|
18
|
+
add this to your main configuration file:
|
19
|
+
color: xmas_tree
|
20
|
+
|
21
|
+
* Enforce the revision managment to avoid some conlifcts during two
|
22
|
+
commits at the same time.
|
23
|
+
|
24
|
+
* Add paginate which just open a file with your default pager program.
|
25
|
+
|
26
|
+
* Remove Prcs from the list of default systems, because it is not fully
|
27
|
+
supported. Of course contributions are wellcome :)
|
28
|
+
|
29
|
+
New in 0.4 2005-10-03:
|
2
30
|
|
3
31
|
* Vcs now supports ruby 1.8.3.
|
4
32
|
|
data/SPEC.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = %q{vcs}
|
3
|
-
s.version = "0.4
|
4
|
-
s.date = %q{
|
3
|
+
s.version = "0.5.2.4"
|
4
|
+
s.date = %q{2006-02-28}
|
5
5
|
s.summary = %q{A wrapper over Version Control Systems}
|
6
6
|
s.email = ["ertai@lrde.epita.fr"]
|
7
7
|
s.homepage = %q{http://rubyforge.org/projects/vcs}
|
8
8
|
s.rubyforge_project = %q{vcs}
|
9
9
|
s.description = %q{Version control systems (Subversion, CVS, PRCS...), however useful, are not very extensible: adding new features can be cumbersome, especially if you want them for different such systems at once. Vcs provide a simple dynamic hierarchy for Version Control Systems.}
|
10
10
|
s.authors = ["Nicolas Pouillard"]
|
11
|
-
s.files = ["lib/vcs/
|
12
|
-
s.executables = ["vcs", "vcs-
|
13
|
-
s.add_dependency(%q<ruby_ex>, ["~> 0.
|
11
|
+
s.files = ["lib/vcs/revision.rb", "lib/vcs/diff.rb", "lib/vcs/conflict.rb", "lib/vcs/message.rb", "lib/vcs/common_commit.rb", "lib/vcs/junk.rb", "lib/vcs/opt_parse.rb", "lib/vcs/edit.rb", "lib/vcs/list.rb", "lib/vcs/mail.rb", "lib/vcs/add.rb", "lib/vcs/app.rb", "lib/vcs/cvs.rb", "lib/vcs/form.rb", "lib/vcs/news.rb", "lib/vcs/delete.rb", "lib/vcs/svn.rb", "lib/vcs/vcs.rb", "lib/vcs/url.rb", "lib/vcs/back.rb", "lib/vcs/environment.rb", "lib/vcs/status.rb", "lib/vcs/changelog.rb", "lib/vcs/last_changed_date.rb", "lib/vcs/script.rb", "lib/vcs/version.rb", "lib/vcs/prcs.rb", "lib/vcs/diffstat.rb", "lib/vcs/ignore.rb", "bin/vcs", "bin/vcs-prcs", "bin/vcs-cvs", "bin/vcs-svn", "contrib/emacs-support/vcs.el", "NEWS", "SPEC.gemspec", "HOWTO", "Rakefile", "README", "NEWS.FR", "AUTHORS", "SPEC.yml"]
|
12
|
+
s.executables = ["vcs", "vcs-prcs", "vcs-cvs", "vcs-svn"]
|
13
|
+
s.add_dependency(%q<ruby_ex>, ["~> 0.4.5"])
|
14
14
|
end
|
data/SPEC.yml
CHANGED
@@ -3,7 +3,7 @@ Author: Nicolas Pouillard
|
|
3
3
|
License: GNU General Public License (GPL)
|
4
4
|
Revision: '$Id$'
|
5
5
|
|
6
|
-
|
6
|
+
version: !feydakins.org,2006/version dev-util/vcs-0.5_beta4
|
7
7
|
|
8
8
|
title: Vcs -- A wrapper over Version Control Systems
|
9
9
|
summary: A wrapper over Version Control Systems
|
@@ -14,11 +14,12 @@ description: |
|
|
14
14
|
hierarchy for Version Control Systems.
|
15
15
|
homepage: http://rubyforge.org/projects/vcs
|
16
16
|
|
17
|
+
user: ertai
|
18
|
+
rubyforge_project: vcs
|
17
19
|
rdoc_dir: doc/html
|
20
|
+
trunk_url: https://svn.lrde.epita.fr/svn/lrdetools/trunk/vcs
|
18
21
|
tags_url: https://svn.lrde.epita.fr/svn/lrdetools/tags
|
19
|
-
|
20
|
-
commit_command: ltci
|
21
|
-
commit_dir: ..
|
22
|
+
version_path: !path lib/vcs/version.rb
|
22
23
|
|
23
24
|
rdoc_files: !filelist
|
24
25
|
- README
|
@@ -28,15 +29,16 @@ rdoc_files: !filelist
|
|
28
29
|
pkg_files: !filelist
|
29
30
|
- lib/vcs/**/*.rb
|
30
31
|
- bin/**/*
|
32
|
+
- contrib/emacs-support/**/*.el
|
31
33
|
- '[A-Z]*'
|
32
34
|
|
33
35
|
executables: [ vcs, vcs-svn, vcs-cvs, vcs-prcs ]
|
34
36
|
|
35
37
|
dependencies:
|
36
38
|
ruby_ex:
|
37
|
-
gem : ~> 0.
|
38
|
-
tarball:
|
39
|
+
gem : ~> 0.4.5
|
40
|
+
tarball: 8879/ruby_ex-0.4.tar.gz
|
39
41
|
vcs : svn://svn.feydakins.org/ruby_ex/trunk
|
40
42
|
|
41
43
|
root_test_suite: test/vcs-check.yml
|
42
|
-
|
44
|
+
uttk_version: ~> 0.3.1
|
@@ -0,0 +1,11 @@
|
|
1
|
+
(defun vcs-mode ()
|
2
|
+
"Mode for editing VCS message files."
|
3
|
+
(interactive)
|
4
|
+
(kill-all-local-variables)
|
5
|
+
(let ((file-name buffer-file-name))
|
6
|
+
(message-mode)
|
7
|
+
;; Ensure message-mode didn't modified file-name.
|
8
|
+
(setq buffer-file-name file-name
|
9
|
+
major-mode 'vcs-mode
|
10
|
+
mode-name "VCS")
|
11
|
+
(run-hooks 'vcs-mode-hook)))
|
data/lib/vcs/add.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Copyright:: Copyright (c) 2005 LRDE. All rights reserved.
|
2
2
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
3
3
|
# License:: Gnu General Public License.
|
4
|
-
# Revision:: $Id: add.rb
|
4
|
+
# Revision:: $Id: /lrde/tools/trunk/vcs/lib/vcs/add.rb 9106 2005-10-03T12:37:03.631187Z pouill_n $
|
5
5
|
|
6
6
|
class Vcs
|
7
7
|
|
data/lib/vcs/app.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Copyright:: Copyright (c) 2005 LRDE. All rights reserved.
|
2
2
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
3
3
|
# License:: Gnu General Public License.
|
4
|
-
# Revision:: $Id: app.rb
|
4
|
+
# Revision:: $Id: /w/lrde/tools/trunk/vcs/lib/vcs/app.rb 22374 2006-02-28T14:42:27.599831Z pouillar $
|
5
5
|
|
6
6
|
require 'pathname'
|
7
7
|
|
@@ -29,7 +29,7 @@ class VcsApp
|
|
29
29
|
|
30
30
|
def requirements
|
31
31
|
Pathname.glob("{#{vcs_dir},#{extension_dirs.join(',')}}/*.rb") do |file|
|
32
|
-
next if file.to_s =~ /\/(app|opt_parse|vcs)\.rb$/
|
32
|
+
next if file.to_s =~ /\/(app|opt_parse|vcs|svn|version)\.rb$/
|
33
33
|
logger.debug { file.basename.to_s } if require file.to_s
|
34
34
|
end
|
35
35
|
grab_all_vcs()
|
@@ -85,7 +85,7 @@ class VcsApp
|
|
85
85
|
end
|
86
86
|
|
87
87
|
def user_configuration_setup
|
88
|
-
grab_dirs('.vcs').
|
88
|
+
grab_dirs('.vcs').reverse_each do |vcs_user_conf|
|
89
89
|
Vcs.merge_user_conf(vcs_user_conf)
|
90
90
|
end
|
91
91
|
end
|
@@ -95,6 +95,7 @@ class VcsApp
|
|
95
95
|
begin
|
96
96
|
user_configuration_setup()
|
97
97
|
Vcs.logger.color = Vcs.color? { STDERR.tty? }
|
98
|
+
Vcs::Logger.enable_xmas_tree_colors if Vcs.xmas_tree_colors?
|
98
99
|
vcs_extensions_setup()
|
99
100
|
@@parser.parse! ARGV if Vcs.default.nil?
|
100
101
|
if Vcs.default.nil?
|
data/lib/vcs/back.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
2
2
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
3
3
|
# License:: Gnu General Public License.
|
4
|
-
# Revision:: $Id: back.rb
|
4
|
+
# Revision:: $Id: /lrde/tools/trunk/vcs/lib/vcs/back.rb 9102 2005-10-03T00:45:53.019651Z pouill_n $
|
5
5
|
|
6
6
|
class Vcs
|
7
7
|
# This command take a command as argument and search the last revision where
|
data/lib/vcs/changelog.rb
CHANGED
@@ -39,6 +39,8 @@ class Vcs
|
|
39
39
|
# Same switches as status
|
40
40
|
def mk_log_entry! ( *args )
|
41
41
|
with_cache! LogEntry, 'Log entry' do
|
42
|
+
puts '<%= Title %>'
|
43
|
+
puts
|
42
44
|
mk_log_entry_contents(*args).each do |se|
|
43
45
|
puts "- #{se.file}: #{se.comment}."
|
44
46
|
end
|
@@ -47,12 +49,25 @@ class Vcs
|
|
47
49
|
alias_command :mkl, :mk_log_entry
|
48
50
|
LogEntry = ',log'.to_path unless defined? LogEntry
|
49
51
|
|
52
|
+
|
53
|
+
# Same switches as status
|
54
|
+
def mk_yaml_log_entry! ( *args )
|
55
|
+
raise NotImplentedError
|
56
|
+
# with_cache! LogEntry, 'Log entry' do
|
57
|
+
# mk_log_entry_contents(*args).each do |se|
|
58
|
+
# puts " - #{se.file}: >2\n #{se.comment}."
|
59
|
+
# end
|
60
|
+
# end
|
61
|
+
end
|
62
|
+
alias_command :mkyl, :mk_yaml_log_entry
|
63
|
+
|
64
|
+
|
50
65
|
def log_to_changelog ( aString )
|
51
66
|
if aString.blank?
|
52
67
|
puts
|
53
68
|
else
|
54
|
-
|
55
|
-
aString.sub!(/^-/,
|
69
|
+
aString.sub!(/^([^-\s])/, "\t\\1")
|
70
|
+
aString.sub!(/^-/, "\t*")
|
56
71
|
puts aString
|
57
72
|
end
|
58
73
|
end
|
@@ -72,6 +87,7 @@ class Vcs
|
|
72
87
|
puts 'Index: ChangeLog'
|
73
88
|
puts "from #{Vcs.full_email}"
|
74
89
|
puts
|
90
|
+
puts "\tDo not fill this draft entry!" if editing?
|
75
91
|
mk_log_entry(*args).each_line(&method(:log_to_changelog))
|
76
92
|
end
|
77
93
|
alias_command :mkml, :mk_message_entry
|
data/lib/vcs/common_commit.rb
CHANGED
@@ -5,18 +5,27 @@
|
|
5
5
|
|
6
6
|
class Vcs
|
7
7
|
|
8
|
-
|
8
|
+
cattr_accessor :commit_state
|
9
|
+
|
10
|
+
def common_commit! ( subject_format, files=[], commit_opts={}, &block )
|
9
11
|
|
10
12
|
unless CL.exist?
|
11
13
|
raise Failure, "No `#{CL}', you are probably not in a valid directory."
|
12
14
|
end
|
13
15
|
|
16
|
+
Vcs.commit_state = :editing
|
17
|
+
force = commit_opts[:force]
|
18
|
+
commit_opts.delete :force
|
19
|
+
|
20
|
+
opts = just_standard_options commit_opts
|
21
|
+
|
14
22
|
@@subject_format = subject_format
|
15
23
|
|
16
|
-
|
24
|
+
logger.info { 'Updating your working copy...' }
|
25
|
+
update! [], opts
|
17
26
|
|
18
27
|
have_unrecognized_files = false
|
19
|
-
status(files) do |se|
|
28
|
+
status(files, opts) do |se|
|
20
29
|
if se.category == :unrecognize
|
21
30
|
have_unrecognized_files = true
|
22
31
|
se.colorize! if color?
|
@@ -24,87 +33,123 @@ class Vcs
|
|
24
33
|
end
|
25
34
|
end
|
26
35
|
if have_unrecognized_files
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
36
|
+
message = 'You have unrecognized files in your working copy!'
|
37
|
+
if Vcs.user_conf.new_user
|
38
|
+
message << "
|
39
|
+
|This meant that these files won't be committed!
|
40
|
+
|You have some solutions to comply with the rule:
|
41
|
+
|- You must put these files in some categories.
|
42
|
+
| For instance you can rename these files and put a `+' before
|
43
|
+
| to make it `precious':
|
44
|
+
| put `,' for `junk'
|
45
|
+
| put `\\' for `unmask'
|
46
|
+
| put `-' for `exclude'
|
47
|
+
|- You can also edit your configuration file (.vcs) to customize
|
48
|
+
| these categories. For example add this:
|
49
|
+
| ------------ .vcs ------------
|
50
|
+
| precious:
|
51
|
+
| - !re my_precious_file[0-9]*
|
52
|
+
| - !re .*\.patch
|
53
|
+
| ------------ .vcs ------------
|
54
|
+
|- You can also perform a partial commit and specify which files
|
55
|
+
| and directories commit. For example this command:
|
56
|
+
| #{@cmd.command} commit foo.c bar/
|
57
|
+
|
|
58
|
+
|".head_cut!
|
59
|
+
end
|
60
|
+
if force
|
61
|
+
logger.warn { message }
|
62
|
+
else
|
63
|
+
logger.error { message }
|
64
|
+
commit_failed
|
65
|
+
end
|
49
66
|
end
|
50
67
|
|
51
|
-
|
68
|
+
block['empty subject'] if block_given?
|
52
69
|
|
53
|
-
|
54
|
-
edit! Message
|
70
|
+
Vcs.commit_state = edit_form!(files, opts.merge(:to => Vcs.mail_options.to))
|
55
71
|
|
56
|
-
iform =
|
72
|
+
iform = YAML.load(IForm.read)
|
57
73
|
|
58
|
-
if
|
59
|
-
|
60
|
-
|
74
|
+
Message.unlink if Message.exist? and not committed?
|
75
|
+
mk_message(files, opts.merge(iform))
|
76
|
+
block[iform['Subject']] if block_given?
|
77
|
+
paginate! Message
|
61
78
|
|
62
|
-
|
63
|
-
|
79
|
+
unless committed?
|
80
|
+
|
81
|
+
if Vcs.interactive?
|
82
|
+
question = 'Committing, are you sure?'
|
83
|
+
begin
|
84
|
+
response = @h.agree "#{question} (y/n)", true
|
85
|
+
rescue NoMethodError
|
86
|
+
response = @h.agree "#{question} (yes/no)"
|
87
|
+
end
|
88
|
+
unless response
|
89
|
+
commit_failed
|
90
|
+
end
|
64
91
|
end
|
65
92
|
|
66
|
-
concat_changelog!(files)
|
93
|
+
concat_changelog!(files, opts)
|
67
94
|
|
68
95
|
files << 'ChangeLog' unless files.empty?
|
69
96
|
|
70
97
|
begin
|
71
|
-
commit_!(files,
|
72
|
-
|
98
|
+
commit_!(files, commit_opts.merge(:message => mk_log_entry(files).read))
|
99
|
+
update!
|
100
|
+
revision = rev.read.to_i
|
101
|
+
iform = YAML.load(IForm.read).merge('Revision' => revision)
|
73
102
|
IForm.open('w') { |f| f.print iform.to_yaml }
|
103
|
+
Vcs.commit_state = revision
|
74
104
|
TMP_CL.delete if TMP_CL.exist?
|
75
105
|
rescue Exception => ex
|
76
106
|
commit_failed ex
|
77
107
|
end
|
78
108
|
|
79
|
-
update!
|
80
|
-
|
81
109
|
end
|
82
110
|
|
83
|
-
|
111
|
+
Vcs.commit_state = :sending
|
112
|
+
block[iform['Subject']] if block_given?
|
84
113
|
|
85
|
-
logger.info 'Deleting junk files...'
|
114
|
+
logger.info { 'Deleting junk files...' }
|
86
115
|
TMP_CL.delete if TMP_CL.exist?
|
87
|
-
|
116
|
+
# Backward typo compatibility
|
117
|
+
'+commited'.to_path.mv('+committed') if '+commited'.to_path.exist?
|
118
|
+
destdir = '+committed'.to_path/iform['Revision'].to_s
|
88
119
|
destdir.mkpath unless destdir.directory?
|
89
|
-
|
120
|
+
moved = PathList.new
|
121
|
+
[LogEntry, Form, IForm, Message].each do |path|
|
90
122
|
next unless path.exist?
|
91
123
|
dest = destdir/path
|
92
|
-
|
124
|
+
moved << path
|
93
125
|
path.rename(dest)
|
94
126
|
end
|
127
|
+
logger.info { "Moving `#{moved.join('\', `')}' to `#{destdir}'..." }
|
95
128
|
|
96
129
|
end
|
97
130
|
protected :common_commit!
|
98
131
|
|
99
132
|
def commit_failed ( ex=nil )
|
100
|
-
|
101
|
-
logger.
|
133
|
+
Message.unlink if defined? Message and Message.exist? and not committed?
|
134
|
+
logger.error { "Aborting #{ex}" }
|
135
|
+
logger.info { 'You can rerun the same command to resume the commit' }
|
102
136
|
raise 'Commit failed'
|
103
137
|
end
|
104
138
|
|
105
|
-
|
106
|
-
|
107
|
-
|
139
|
+
def committed?
|
140
|
+
Vcs.commit_state.is_a? Integer
|
141
|
+
end
|
142
|
+
|
143
|
+
def editing?
|
144
|
+
Vcs.commit_state == :editing
|
145
|
+
end
|
146
|
+
|
147
|
+
def sending?
|
148
|
+
Vcs.commit_state == :sending
|
149
|
+
end
|
150
|
+
|
151
|
+
def committing?
|
152
|
+
[:editing, :committing, :sending].include? Vcs.commit_state
|
108
153
|
end
|
109
154
|
|
110
155
|
end # class Vcs
|
data/lib/vcs/conflict.rb
CHANGED
@@ -5,19 +5,23 @@
|
|
5
5
|
|
6
6
|
class Vcs
|
7
7
|
|
8
|
-
def mk_conflicts_list ( files, options={} )
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
def mk_conflicts_list ( files=[], options={} )
|
9
|
+
conflicts = []
|
10
|
+
status(files, options) do |se|
|
11
|
+
conflicts << se.file if se.category == :conflict
|
12
|
+
end
|
13
|
+
raise "no conflicts" if conflicts.empty?
|
14
|
+
conflicts
|
12
15
|
end
|
13
16
|
protected :mk_conflicts_list
|
14
17
|
|
15
|
-
def edit_conflicts! ( files, options={} )
|
16
|
-
edit! mk_conflicts_list
|
18
|
+
def edit_conflicts! ( files=[], options={} )
|
19
|
+
edit! mk_conflicts_list(files, options)
|
20
|
+
resolve_conflicts! files, options
|
17
21
|
end
|
18
22
|
|
19
|
-
def resolve_conflicts! ( files, options={} )
|
20
|
-
conflicts = mk_conflicts_list
|
23
|
+
def resolve_conflicts! ( files=[], options={} )
|
24
|
+
conflicts = mk_conflicts_list(files, options)
|
21
25
|
question = "Resolve these conflicts?: \n - #{conflicts.join("\n - ")}\n(y/n)"
|
22
26
|
if @h.agree question, true
|
23
27
|
return resolved(conflicts)
|
data/lib/vcs/cvs.rb
CHANGED
@@ -15,10 +15,30 @@ class Cvs < Vcs
|
|
15
15
|
self.option_controller = @@cvs_option_controller
|
16
16
|
end
|
17
17
|
|
18
|
-
%w[ rdiff rtag tag ].each do |m|
|
18
|
+
%w[ rdiff rtag tag login ].each do |m|
|
19
19
|
add_basic_method(m)
|
20
20
|
end
|
21
21
|
|
22
|
-
@@options_specification ||= "
|
22
|
+
@@options_specification ||= "
|
23
|
+
-H (--usage) ((Displays usage information for command.))
|
24
|
+
-Q (--really-quiet) ((Cause CVS to be really quiet.))
|
25
|
+
-q (--somewhat-quiet) ((Cause CVS to be somewhat quiet.))
|
26
|
+
-r (--read-only) ((Make checked-out files read-only.))
|
27
|
+
-w (--read-write) ((Make checked-out files read-write (default).))
|
28
|
+
-n (--pretend) ((Do not execute anything that will change the disk.))
|
29
|
+
-t (--trace) ((Show trace of program execution -- try with -n.))
|
30
|
+
-v (--version) ((CVS version and copyright.))
|
31
|
+
-T (--tmp) TMPDIR ((Use 'tmpdir' for temporary files.))
|
32
|
+
-e (--editor) EDITOR ((Use 'editor' for editing log information.))
|
33
|
+
-d (--cvsroot) CVSROOT ((Overrides $CVSROOT as the root of the CVS tree.))
|
34
|
+
-f (--no-cvsrc) ((Do not use the ~/.cvsrc file.))
|
35
|
+
-z (--compression) LEVEL ((Use compression level 'LEVEL' for net traffic.))
|
36
|
+
-a (--auth) ((Authenticate all net traffic.))
|
37
|
+
-s (--set) VAR=VAL ((Set CVS user variable.))
|
38
|
+
".gsub(/^( +)/, '*PRE*\1')
|
39
|
+
|
40
|
+
def diffw ( files=[], options={} )
|
41
|
+
super
|
42
|
+
end
|
23
43
|
|
24
44
|
end # class Cvs
|