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.
@@ -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