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.
@@ -6,7 +6,7 @@ Subversion (SVN) repository. (See Requirements)
6
6
 
7
7
  == VERSION:
8
8
 
9
- Version 0.0.9
9
+ Version 0.0.10
10
10
 
11
11
  NOTE: THIS IS ALPHA QUALITY SOFTWARE, use at your own risk!
12
12
 
@@ -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
@@ -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.empty?
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.empty?
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.empty?
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.empty?
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] = ' '
@@ -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: 13
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 9
10
- version: 0.0.9
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-02-07 00:00:00 -08:00
18
+ date: 2012-06-27 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies: []
21
21