svn_wc_tree 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +1 -1
- data/lib/svn_wc_broker.rb +7 -5
- data/lib/svn_wc_client.rb +91 -6
- data/svn_wc_tree/js/swt.js +20 -1
- metadata +4 -4
data/README.rdoc
CHANGED
data/lib/svn_wc_broker.rb
CHANGED
@@ -33,9 +33,9 @@ module SvnWcBroker
|
|
33
33
|
#--
|
34
34
|
# this list gets 'evaled' is why
|
35
35
|
#++
|
36
|
-
SUPPORTED_ACTIONS = %w(add commit delete info
|
37
|
-
revert list ignore diff update
|
38
|
-
status)
|
36
|
+
SUPPORTED_ACTIONS = %w(add commit delete info
|
37
|
+
revert list ignore diff update
|
38
|
+
status status_show_updates update_selected)
|
39
39
|
|
40
40
|
# set abs_path to your configuration file
|
41
41
|
def set_conf_file(conf) ; @conf_file = conf ; end
|
@@ -85,19 +85,20 @@ module SvnWcBroker
|
|
85
85
|
if files and files.to_a.size > 0
|
86
86
|
files_striped = ret_just_files_list(
|
87
87
|
process_params_to_list_of_files(files.to_s))
|
88
|
+
#return svn_results debug_request(process_params_to_list_of_files(files.to_s))
|
88
89
|
@files = files_striped.to_a.uniq
|
89
90
|
#@files.uniq
|
90
91
|
#return svn_results debug_request(@files)
|
91
92
|
|
92
93
|
# diff need status info
|
93
|
-
if ('diff' == action )
|
94
|
+
if ('diff' == action || 'update_selected' == action)
|
94
95
|
@files = process_params_to_list_of_files(files.to_s).to_a.uniq
|
95
96
|
end
|
96
97
|
|
97
98
|
end
|
98
99
|
# eval known actions only
|
99
100
|
# svn_list takes args # svn_status takes args
|
100
|
-
if action == 'list' || action == 'status'
|
101
|
+
if action == 'list' || action == 'status' || action == 'status_show_updates'
|
101
102
|
eval("svn_#{action}('#{params['filter_re']}','#{params['filter_amt']}','#{params['dir']}')")
|
102
103
|
else
|
103
104
|
# NOTE only eval known supported actions
|
@@ -161,6 +162,7 @@ module SvnWcBroker
|
|
161
162
|
return file_status_list unless file_status_list.respond_to?('each')
|
162
163
|
file_status_list.each do |f_list_str|
|
163
164
|
f_stat, f_name = f_list_str.split(/\s/)
|
165
|
+
next if f_name == 'undefined' # yes the str undefined
|
164
166
|
just_files.push(f_name)
|
165
167
|
end
|
166
168
|
just_files
|
data/lib/svn_wc_client.rb
CHANGED
@@ -104,10 +104,53 @@ module SvnRepoClient
|
|
104
104
|
repo_entries
|
105
105
|
end
|
106
106
|
|
107
|
+
# emulate a svn status -u
|
108
|
+
# returns entries on remote host not on local
|
109
|
+
# shows what files would be updated from an svn up
|
110
|
+
|
111
|
+
def svn_status_show_updates(f_regex=nil, f_amt=nil, dir=nil)
|
112
|
+
get_repo
|
113
|
+
repo_entries = Array.new
|
114
|
+
dir = @repo_root unless dir and not dir.empty?
|
115
|
+
# only way to test
|
116
|
+
# @error = "1.#{f_regex} 2.#{f_amt} 3.#{dir}"
|
117
|
+
# repo_entries.push info_data
|
118
|
+
@current_rev = nil
|
119
|
+
begin
|
120
|
+
@@svn_wc.info(dir).each do |r|
|
121
|
+
@current_rev = r[1] if r[0].to_s == 'rev'
|
122
|
+
end
|
123
|
+
rescue SvnWc::RepoAccessError => e
|
124
|
+
@error = e.message
|
125
|
+
repo_entries.push info_data
|
126
|
+
ensure
|
127
|
+
if @current_rev.nil?
|
128
|
+
@error = 'Error: Revision Unknown'
|
129
|
+
repo_entries.push info_data
|
130
|
+
end
|
131
|
+
end
|
132
|
+
svn_list(f_regex, f_amt, dir)
|
133
|
+
end
|
134
|
+
|
135
|
+
def not_new_rev(svn_e, ent)
|
136
|
+
lcr = svn_e[:last_changed_rev] rescue nil
|
137
|
+
return true if lcr.nil?
|
138
|
+
# return false if is a new revision
|
139
|
+
#return false if lcr > @current_rev
|
140
|
+
#raise "1.#{enty} 2.#{svn_e[:entry]} 3.#{svn_e.inspect}"
|
141
|
+
if lcr > @current_rev
|
142
|
+
# skip if file is on remote and local, we want remote only
|
143
|
+
return true if File.file?(ent) || File.directory?(ent)
|
144
|
+
return false
|
145
|
+
end
|
146
|
+
true
|
147
|
+
end
|
148
|
+
private :not_new_rev
|
107
149
|
|
108
150
|
# diff current to previous (HEAD only)
|
109
151
|
# returns diff content
|
110
152
|
def svn_diff
|
153
|
+
raise 'svn diff requires file selections!' if @files.nil?
|
111
154
|
file_list_diffs = Array.new
|
112
155
|
@files.each { |f_list_str|
|
113
156
|
f_stat, f_name = f_list_str.split(/\s/)
|
@@ -131,7 +174,7 @@ module SvnRepoClient
|
|
131
174
|
get_repo
|
132
175
|
rev = Array.new
|
133
176
|
begin
|
134
|
-
raise 'svn commit requires file list!' if @files.
|
177
|
+
raise 'svn commit requires file list!' if @files.nil?
|
135
178
|
@content = "Committed. Revision: #{@@svn_wc.commit(@files)}
|
136
179
|
Files:
|
137
180
|
#{@files.join("\n")}"
|
@@ -148,7 +191,7 @@ module SvnRepoClient
|
|
148
191
|
get_repo
|
149
192
|
rev = Array.new
|
150
193
|
begin
|
151
|
-
raise 'svn add requires file list!' if @files.
|
194
|
+
raise 'svn add requires file list!' if @files.nil?
|
152
195
|
@content = "Added. #{@@svn_wc.add(@files).to_a.join("\n")}"
|
153
196
|
rev.push info_data
|
154
197
|
rescue SvnWc::RepoAccessError => e
|
@@ -181,12 +224,53 @@ module SvnRepoClient
|
|
181
224
|
remote_files
|
182
225
|
end
|
183
226
|
|
227
|
+
## update, returns 'updated' message, revision and update data
|
228
|
+
#def svn_update_selected
|
229
|
+
# get_repo
|
230
|
+
# remote_files = Array.new
|
231
|
+
# begin
|
232
|
+
# #@error = "1.#{@files} 2.#{@files.class} 3.#{@files[1]}"
|
233
|
+
# #remote_files.push info_data
|
234
|
+
# raise 'svn update selected requires file list!' if @files.nil?
|
235
|
+
# @content = 'Updated: Revision '
|
236
|
+
# @content << @@svn_wc.update(@files.to_s).to_a.join("\n")
|
237
|
+
# remote_files.push info_data
|
238
|
+
# rescue SvnWc::RepoAccessError => e
|
239
|
+
# @error = e.message
|
240
|
+
# remote_files.push info_data
|
241
|
+
# end
|
242
|
+
# remote_files
|
243
|
+
#end
|
244
|
+
|
245
|
+
# update, returns 'updated' message, revision and update data
|
246
|
+
def svn_update_selected
|
247
|
+
raise 'svn update selected requires file list!' if @files.nil?
|
248
|
+
remote_files = Array.new
|
249
|
+
@files.each { |f_list_str|
|
250
|
+
f_stat, f_name = f_list_str.split(/\s/)
|
251
|
+
#@error = "1.#{@files} 2.#{@files.class} 3.#{@files[1]}"
|
252
|
+
#remote_files.push info_data
|
253
|
+
begin
|
254
|
+
get_repo
|
255
|
+
@path = f_name
|
256
|
+
#@content = @@svn_wc.diff(f_name).to_s
|
257
|
+
@content = 'Updated: Revision '
|
258
|
+
@content << @@svn_wc.update(f_name).to_s
|
259
|
+
remote_files.push info_data
|
260
|
+
rescue SvnWc::RepoAccessError => e
|
261
|
+
@error = e.message
|
262
|
+
remote_files.push info_data
|
263
|
+
end
|
264
|
+
}
|
265
|
+
remote_files
|
266
|
+
end
|
267
|
+
|
184
268
|
# delete
|
185
269
|
def svn_delete
|
186
270
|
get_repo
|
187
271
|
rev = Array.new
|
188
272
|
begin
|
189
|
-
raise 'svn delete requires file list!' if @files.
|
273
|
+
raise 'svn delete requires file list!' if @files.nil?
|
190
274
|
@content = "Deleted. #{@@svn_wc.delete(@files).to_a.join("\n")}"
|
191
275
|
rev.push info_data
|
192
276
|
rescue SvnWc::RepoAccessError => e
|
@@ -215,7 +299,7 @@ module SvnRepoClient
|
|
215
299
|
get_repo
|
216
300
|
infos = Array.new
|
217
301
|
begin
|
218
|
-
raise 'svn revert requires file list!' if @files.
|
302
|
+
raise 'svn revert requires file list!' if @files.nil?
|
219
303
|
@content = "Reverted: #{@@svn_wc.revert(@files)}
|
220
304
|
Files:
|
221
305
|
#{@files.join("\n")}"
|
@@ -254,9 +338,10 @@ module SvnRepoClient
|
|
254
338
|
begin
|
255
339
|
l_svn_list = Array.new
|
256
340
|
@@svn_wc.list(dir).each { |el|
|
257
|
-
status_info = {}
|
258
|
-
#fqpn = File.join(@repo_root, el[:entry])
|
259
341
|
fqpn = File.join(dir, el[:entry])
|
342
|
+
next if not_new_rev(el, fqpn) if @current_rev
|
343
|
+
#fqpn = File.join(@repo_root, el[:entry])
|
344
|
+
status_info = {}
|
260
345
|
#status_info[:last_changed_rev] = el[:last_changed_rev]
|
261
346
|
status_info[:entry_name] = fqpn
|
262
347
|
status_info[:status] = ' '
|
data/svn_wc_tree/js/swt.js
CHANGED
@@ -97,6 +97,17 @@ $(document).ready(function(){
|
|
97
97
|
},
|
98
98
|
separator_before : true
|
99
99
|
},
|
100
|
+
// svn status -u menu option
|
101
|
+
svn_status_u : {
|
102
|
+
label : 'svn status -u',
|
103
|
+
icon : '',
|
104
|
+
action : function (NODE, TREE_OBJ) {
|
105
|
+
SVN_ACTION = 'status_show_updates';
|
106
|
+
TREE_OBJ.callback('beforedata', [NODE, TREE_OBJ]);
|
107
|
+
$.tree.focused().refresh();//refresh does a http POST
|
108
|
+
},
|
109
|
+
separator_before : true
|
110
|
+
},
|
100
111
|
// svn update menu option
|
101
112
|
svn_update : {
|
102
113
|
label : "svn update",
|
@@ -105,6 +116,14 @@ $(document).ready(function(){
|
|
105
116
|
},
|
106
117
|
separator_before : true
|
107
118
|
},
|
119
|
+
// svn update menu option
|
120
|
+
svn_update_u : {
|
121
|
+
label : "svn update selected",
|
122
|
+
action : function (NODE, TREE_OBJ) {
|
123
|
+
post_req_svn_resp('update_selected');
|
124
|
+
},
|
125
|
+
separator_before : true
|
126
|
+
},
|
108
127
|
// svn diff menu option
|
109
128
|
svn_diff : {
|
110
129
|
label : 'svn diff',
|
@@ -416,7 +435,7 @@ $(document).ready(function(){
|
|
416
435
|
// just repo root sent, other files not seen!?
|
417
436
|
if (info[1] === undefined) abs_pn = info[1] + ' ' + info[0];
|
418
437
|
|
419
|
-
svn_files.push(abs_pn);
|
438
|
+
if (abs_pn != undefined) svn_files.push(abs_pn);
|
420
439
|
}
|
421
440
|
//console.log(svn_files);
|
422
441
|
}
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: svn_wc_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 10
|
10
|
+
version: 0.0.10
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Wright
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-06-27 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|