svn_wc_tree 0.0.9 → 0.0.10
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/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
|
|