subversion 1.6.6-x86-mswin32-60

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.
Files changed (42) hide show
  1. data/licenses/apr/LICENSE +341 -0
  2. data/licenses/apr/NOTICE +15 -0
  3. data/licenses/apr-util/LICENSE +443 -0
  4. data/licenses/apr-util/NOTICE +14 -0
  5. data/licenses/bdb/LICENSE +102 -0
  6. data/licenses/cyrus-sasl/COPYING +44 -0
  7. data/licenses/neon/COPYING.LIB +482 -0
  8. data/licenses/openssl/LICENSE +127 -0
  9. data/licenses/serf/LICENSE +201 -0
  10. data/licenses/svn/COPYING +57 -0
  11. data/licenses/zlib/README +125 -0
  12. data/ruby/ext/svn/ext/client.dll +0 -0
  13. data/ruby/ext/svn/ext/core.dll +0 -0
  14. data/ruby/ext/svn/ext/delta.dll +0 -0
  15. data/ruby/ext/svn/ext/fs.dll +0 -0
  16. data/ruby/ext/svn/ext/intl3_svn.dll +0 -0
  17. data/ruby/ext/svn/ext/libapr-1.dll +0 -0
  18. data/ruby/ext/svn/ext/libaprutil-1.dll +0 -0
  19. data/ruby/ext/svn/ext/libdb44.dll +0 -0
  20. data/ruby/ext/svn/ext/libsvn_client-1.dll +0 -0
  21. data/ruby/ext/svn/ext/libsvn_delta-1.dll +0 -0
  22. data/ruby/ext/svn/ext/libsvn_diff-1.dll +0 -0
  23. data/ruby/ext/svn/ext/libsvn_fs-1.dll +0 -0
  24. data/ruby/ext/svn/ext/libsvn_ra-1.dll +0 -0
  25. data/ruby/ext/svn/ext/libsvn_repos-1.dll +0 -0
  26. data/ruby/ext/svn/ext/libsvn_subr-1.dll +0 -0
  27. data/ruby/ext/svn/ext/libsvn_swig_ruby-1.dll +0 -0
  28. data/ruby/ext/svn/ext/libsvn_wc-1.dll +0 -0
  29. data/ruby/ext/svn/ext/ra.dll +0 -0
  30. data/ruby/ext/svn/ext/repos.dll +0 -0
  31. data/ruby/ext/svn/ext/wc.dll +0 -0
  32. data/ruby/lib/svn/client.rb +771 -0
  33. data/ruby/lib/svn/core.rb +817 -0
  34. data/ruby/lib/svn/delta.rb +503 -0
  35. data/ruby/lib/svn/error.rb +74 -0
  36. data/ruby/lib/svn/fs.rb +628 -0
  37. data/ruby/lib/svn/info.rb +321 -0
  38. data/ruby/lib/svn/ra.rb +353 -0
  39. data/ruby/lib/svn/repos.rb +472 -0
  40. data/ruby/lib/svn/util.rb +129 -0
  41. data/ruby/lib/svn/wc.rb +689 -0
  42. metadata +96 -0
@@ -0,0 +1,472 @@
1
+ require "English"
2
+ require "svn/error"
3
+ require "svn/util"
4
+ require "svn/core"
5
+ require "svn/fs"
6
+ require "svn/client"
7
+ require "svn/ext/repos"
8
+
9
+ module Svn
10
+ module Repos
11
+ Util.set_constants(Ext::Repos, self)
12
+ Util.set_methods(Ext::Repos, self)
13
+
14
+
15
+ @@alias_targets = %w(create hotcopy recover db_logfiles)
16
+ class << self
17
+ @@alias_targets.each do |target|
18
+ alias_method "_#{target}", target
19
+ end
20
+ end
21
+ @@alias_targets.each do |target|
22
+ alias_method "_#{target}", target
23
+ end
24
+ @@alias_targets = nil
25
+
26
+ module_function
27
+ def create(path, config={}, fs_config={}, &block)
28
+ _create(path, nil, nil, config, fs_config, &block)
29
+ end
30
+
31
+ def hotcopy(src, dest, clean_logs=true)
32
+ _hotcopy(src, dest, clean_logs)
33
+ end
34
+
35
+ def recover(path, nonblocking=false, cancel_func=nil, &start_callback)
36
+ recover3(path, nonblocking, start_callback, cancel_func)
37
+ end
38
+
39
+ def db_logfiles(path, only_unused=true)
40
+ _db_logfiles(path, only_unused)
41
+ end
42
+
43
+ def read_authz(file, must_exist=true)
44
+ Repos.authz_read(file, must_exist)
45
+ end
46
+
47
+ ReposCore = SWIG::TYPE_p_svn_repos_t
48
+ class ReposCore
49
+ class << self
50
+ def def_simple_delegate(*ids)
51
+ ids.each do |id|
52
+ module_eval(<<-EOC, __FILE__, __LINE__)
53
+ def #{id.to_s}
54
+ Repos.#{id.to_s}(self)
55
+ end
56
+ EOC
57
+ end
58
+ end
59
+ end
60
+
61
+ def_simple_delegate :path, :db_env, :conf_dir
62
+ def_simple_delegate :svnserve_conf, :lock_dir
63
+ def_simple_delegate :db_lockfile, :db_logs_lockfile
64
+ def_simple_delegate :hook_dir, :start_commit_hook
65
+ def_simple_delegate :pre_commit_hook, :post_commit_hook
66
+ def_simple_delegate :pre_revprop_change_hook, :post_revprop_change_hook
67
+ def_simple_delegate :pre_lock_hook, :post_lock_hook
68
+ def_simple_delegate :pre_unlock_hook, :post_unlock_hook
69
+
70
+ attr_reader :authz_read_func
71
+
72
+ def fs
73
+ Repos.fs_wrapper(self)
74
+ end
75
+
76
+ def set_authz_read_func(&block)
77
+ @authz_read_func = block
78
+ end
79
+
80
+ def report(rev, username, fs_base, target, tgt_path,
81
+ editor, text_deltas=true, recurse=true,
82
+ ignore_ancestry=false, authz_read_func=nil)
83
+ authz_read_func ||= @authz_read_func
84
+ args = [
85
+ rev, username, self, fs_base, target, tgt_path,
86
+ text_deltas, recurse, ignore_ancestry, editor,
87
+ authz_read_func,
88
+ ]
89
+ report_baton = Repos.begin_report(*args)
90
+ setup_report_baton(report_baton)
91
+ if block_given?
92
+ report_baton.set_path("", rev)
93
+ result = yield(report_baton)
94
+ report_baton.finish_report unless report_baton.aborted?
95
+ result
96
+ else
97
+ report_baton
98
+ end
99
+ end
100
+
101
+ def report2(rev, fs_base, target, tgt_path, editor, text_deltas=true,
102
+ ignore_ancestry=false, depth=nil, authz_read_func=nil,
103
+ send_copyfrom_args=nil)
104
+ authz_read_func ||= @authz_read_func
105
+ args = [
106
+ rev, self, fs_base, target, tgt_path, text_deltas,
107
+ depth, ignore_ancestry, send_copyfrom_args, editor,
108
+ authz_read_func,
109
+ ]
110
+ report_baton = Repos.begin_report2(*args)
111
+ setup_report_baton(report_baton)
112
+ if block_given?
113
+ report_baton.set_path("", rev, false, nil, depth)
114
+ result = yield(report_baton)
115
+ report_baton.finish_report unless report_baton.aborted?
116
+ result
117
+ else
118
+ report_baton
119
+ end
120
+ end
121
+
122
+ def commit_editor(repos_url, base_path, txn=nil, user=nil,
123
+ log_msg=nil, commit_callback=nil,
124
+ authz_callback=nil)
125
+ editor, baton = Repos.get_commit_editor3(self, txn, repos_url,
126
+ base_path, user, log_msg,
127
+ commit_callback,
128
+ authz_callback)
129
+ editor.baton = baton
130
+ editor
131
+ end
132
+
133
+ def commit_editor2(repos_url, base_path, txn=nil, user=nil,
134
+ log_msg=nil, commit_callback=nil,
135
+ authz_callback=nil)
136
+ editor, baton = Repos.get_commit_editor4(self, txn, repos_url,
137
+ base_path, user, log_msg,
138
+ commit_callback,
139
+ authz_callback)
140
+ editor.baton = baton
141
+ editor
142
+ end
143
+
144
+ def commit_editor3(repos_url, base_path, txn=nil, rev_props=nil,
145
+ commit_callback=nil, authz_callback=nil)
146
+ rev_props ||= {}
147
+ editor, baton = Repos.get_commit_editor5(self, txn, repos_url,
148
+ base_path, rev_props,
149
+ commit_callback,
150
+ authz_callback)
151
+ editor.baton = baton
152
+ editor
153
+ end
154
+
155
+ def youngest_revision
156
+ fs.youngest_rev
157
+ end
158
+ alias_method :youngest_rev, :youngest_revision
159
+
160
+ def dated_revision(date)
161
+ Repos.dated_revision(self, date.to_apr_time)
162
+ end
163
+
164
+ def logs(paths, start_rev, end_rev, limit,
165
+ discover_changed_paths=true,
166
+ strict_node_history=false,
167
+ authz_read_func=nil)
168
+ authz_read_func ||= @authz_read_func
169
+ paths = [paths] unless paths.is_a?(Array)
170
+ infos = []
171
+ receiver = Proc.new do |changed_paths, revision, author, date, message|
172
+ if block_given?
173
+ yield(changed_paths, revision, author, date, message)
174
+ end
175
+ infos << [changed_paths, revision, author, date, message]
176
+ end
177
+ Repos.get_logs3(self, paths, start_rev, end_rev,
178
+ limit, discover_changed_paths,
179
+ strict_node_history, authz_read_func,
180
+ receiver)
181
+ infos
182
+ end
183
+
184
+ def file_revs(path, start_rev, end_rev, authz_read_func=nil)
185
+ args = [path, start_rev, end_rev, authz_read_func]
186
+ if block_given?
187
+ revs = file_revs2(*args) do |path, rev, rev_props, prop_diffs|
188
+ yield(path, rev, rev_props, Util.hash_to_prop_array(prop_diffs))
189
+ end
190
+ else
191
+ revs = file_revs2(*args)
192
+ end
193
+ revs.collect do |path, rev, rev_props, prop_diffs|
194
+ [path, rev, rev_props, Util.hash_to_prop_array(prop_diffs)]
195
+ end
196
+ end
197
+
198
+ def file_revs2(path, start_rev, end_rev, authz_read_func=nil)
199
+ authz_read_func ||= @authz_read_func
200
+ revs = []
201
+ handler = Proc.new do |path, rev, rev_props, prop_diffs|
202
+ yield(path, rev, rev_props, prop_diffs) if block_given?
203
+ revs << [path, rev, rev_props, prop_diffs]
204
+ end
205
+ Repos.get_file_revs(self, path, start_rev, end_rev,
206
+ authz_read_func, handler)
207
+ revs
208
+ end
209
+
210
+ def commit_txn(txn)
211
+ Repos.fs_commit_txn(self, txn)
212
+ end
213
+
214
+ def transaction_for_commit(*args)
215
+ if args.first.is_a?(Hash)
216
+ props, rev = args
217
+ else
218
+ author, log, rev = args
219
+ props = {
220
+ Svn::Core::PROP_REVISION_AUTHOR => author,
221
+ Svn::Core::PROP_REVISION_LOG => log,
222
+ }
223
+ end
224
+ txn = Repos.fs_begin_txn_for_commit2(self, rev || youngest_rev, props)
225
+
226
+ if block_given?
227
+ yield(txn)
228
+ commit(txn) if fs.transactions.include?(txn.name)
229
+ else
230
+ txn
231
+ end
232
+ end
233
+
234
+ def transaction_for_update(author, rev=nil)
235
+ txn = Repos.fs_begin_txn_for_update(self, rev || youngest_rev, author)
236
+
237
+ if block_given?
238
+ yield(txn)
239
+ txn.abort if fs.transactions.include?(txn.name)
240
+ else
241
+ txn
242
+ end
243
+ end
244
+
245
+ def commit(txn)
246
+ Repos.fs_commit_txn(self, txn)
247
+ end
248
+
249
+ def lock(path, token=nil, comment=nil, dav_comment=true,
250
+ expiration_date=nil, current_rev=nil, steal_lock=false)
251
+ if expiration_date
252
+ expiration_date = expiration_date.to_apr_time
253
+ else
254
+ expiration_date = 0
255
+ end
256
+ current_rev ||= youngest_rev
257
+ Repos.fs_lock(self, path, token, comment,
258
+ dav_comment, expiration_date,
259
+ current_rev, steal_lock)
260
+ end
261
+
262
+ def unlock(path, token, break_lock=false)
263
+ Repos.fs_unlock(self, path, token, break_lock)
264
+ end
265
+
266
+ def get_locks(path, authz_read_func=nil)
267
+ authz_read_func ||= @authz_read_func
268
+ Repos.fs_get_locks(self, path, authz_read_func)
269
+ end
270
+
271
+ def set_prop(author, name, new_value, rev=nil, authz_read_func=nil,
272
+ use_pre_revprop_change_hook=true,
273
+ use_post_revprop_change_hook=true)
274
+ authz_read_func ||= @authz_read_func
275
+ rev ||= youngest_rev
276
+ Repos.fs_change_rev_prop3(self, rev, author, name, new_value,
277
+ use_pre_revprop_change_hook,
278
+ use_post_revprop_change_hook,
279
+ authz_read_func)
280
+ end
281
+
282
+ def prop(name, rev=nil, authz_read_func=nil)
283
+ authz_read_func ||= @authz_read_func
284
+ rev ||= youngest_rev
285
+ value = Repos.fs_revision_prop(self, rev, name, authz_read_func)
286
+ if name == Svn::Core::PROP_REVISION_DATE
287
+ value = Time.from_svn_format(value)
288
+ end
289
+ value
290
+ end
291
+
292
+ def proplist(rev=nil, authz_read_func=nil)
293
+ authz_read_func ||= @authz_read_func
294
+ rev ||= youngest_rev
295
+ props = Repos.fs_revision_proplist(self, rev, authz_read_func)
296
+ if props.has_key?(Svn::Core::PROP_REVISION_DATE)
297
+ props[Svn::Core::PROP_REVISION_DATE] =
298
+ Time.from_svn_format(props[Svn::Core::PROP_REVISION_DATE])
299
+ end
300
+ props
301
+ end
302
+
303
+ def node_editor(base_root, root)
304
+ editor, baton = Repos.node_editor(self, base_root, root)
305
+ def baton.node
306
+ Repos.node_from_baton(self)
307
+ end
308
+ editor.baton = baton
309
+ editor
310
+ end
311
+
312
+ def dump_fs(dumpstream, feedback_stream, start_rev, end_rev,
313
+ incremental=true, use_deltas=true, &cancel_func)
314
+ Repos.dump_fs2(self, dumpstream, feedback_stream,
315
+ start_rev, end_rev, incremental,
316
+ use_deltas, cancel_func)
317
+ end
318
+
319
+ def load_fs(dumpstream, feedback_stream=nil, uuid_action=nil,
320
+ parent_dir=nil, use_pre_commit_hook=true,
321
+ use_post_commit_hook=true, &cancel_func)
322
+ uuid_action ||= Svn::Repos::LOAD_UUID_DEFAULT
323
+ Repos.load_fs2(self, dumpstream, feedback_stream,
324
+ uuid_action, parent_dir,
325
+ use_pre_commit_hook, use_post_commit_hook,
326
+ cancel_func)
327
+ end
328
+
329
+ def build_parser(uuid_action, parent_dir,
330
+ use_history=true, outstream=nil)
331
+ outstream ||= StringIO.new
332
+ parser, baton = Repos.get_fs_build_parser2(use_history,
333
+ uuid_action,
334
+ outstream,
335
+ parent_dir)
336
+ def parser.parse_dumpstream(stream, &cancel_func)
337
+ Repos.parse_dumpstream2(stream, self, @baton, cancel_func)
338
+ end
339
+
340
+ def parser.outstream=(new_stream)
341
+ @outstream = new_stream
342
+ end
343
+
344
+ def parser.baton=(new_baton)
345
+ @baton = new_baton
346
+ end
347
+
348
+ def parser.baton
349
+ @baton
350
+ end
351
+
352
+ parser.outstream = outstream
353
+ parser.baton = baton
354
+ parser
355
+ end
356
+
357
+ def delta_tree(root, base_rev)
358
+ base_root = fs.root(base_rev)
359
+ editor = node_editor(base_root, root)
360
+ root.replay(editor)
361
+ editor.baton.node
362
+ end
363
+
364
+ def mergeinfo(paths, revision=nil, inherit=nil,
365
+ include_descendants=false, &authz_read_func)
366
+ path = nil
367
+ unless paths.is_a?(Array)
368
+ path = paths
369
+ paths = [path]
370
+ end
371
+ revision ||= Svn::Core::INVALID_REVNUM
372
+ results = Repos.fs_get_mergeinfo(self, paths, revision,
373
+ inherit, include_descendants,
374
+ authz_read_func)
375
+ results = results[path] if path
376
+ results
377
+ end
378
+
379
+ private
380
+ def setup_report_baton(baton)
381
+ baton.instance_variable_set("@aborted", false)
382
+
383
+ def baton.aborted?
384
+ @aborted
385
+ end
386
+
387
+ def baton.set_path(path, revision, start_empty=false, lock_token=nil,
388
+ depth=nil)
389
+ Repos.set_path3(self, path, revision, depth, start_empty, lock_token)
390
+ end
391
+
392
+ def baton.link_path(path, link_path, revision, start_empty=false,
393
+ lock_token=nil, depth=nil)
394
+ Repos.link_path3(self, path, link_path, revision, depth,
395
+ start_empty, lock_token)
396
+ end
397
+
398
+ def baton.delete_path(path)
399
+ Repos.delete_path(self, path)
400
+ end
401
+
402
+ def baton.finish_report
403
+ Repos.finish_report(self)
404
+ end
405
+
406
+ def baton.abort_report
407
+ Repos.abort_report(self)
408
+ @aborted = true
409
+ end
410
+
411
+ end
412
+ end
413
+
414
+
415
+ class Node
416
+
417
+ alias text_mod? text_mod
418
+ alias prop_mod? prop_mod
419
+
420
+ def copy?
421
+ Util.copy?(copyfrom_path, copyfrom_rev)
422
+ end
423
+
424
+ def add?
425
+ action == "A"
426
+ end
427
+
428
+ def delete?
429
+ action == "D"
430
+ end
431
+
432
+ def replace?
433
+ action == "R"
434
+ end
435
+
436
+ def file?
437
+ kind == Core::NODE_FILE
438
+ end
439
+
440
+ def dir?
441
+ kind == Core::NODE_DIR
442
+ end
443
+
444
+ def none?
445
+ kind == Core::NODE_NONE
446
+ end
447
+
448
+ def unknown?
449
+ kind == Core::NODE_UNKNOWN
450
+ end
451
+
452
+ end
453
+
454
+ Authz = SWIG::TYPE_p_svn_authz_t
455
+ class Authz
456
+
457
+ class << self
458
+ def read(file, must_exist=true)
459
+ Repos.authz_read(file, must_exist)
460
+ end
461
+ end
462
+
463
+ def can_access?(repos_name, path, user, required_access)
464
+ Repos.authz_check_access(self,
465
+ repos_name,
466
+ path,
467
+ user,
468
+ required_access)
469
+ end
470
+ end
471
+ end
472
+ end
@@ -0,0 +1,129 @@
1
+ if /cygwin|mingw|mswin32|bccwin32/.match(RUBY_PLATFORM)
2
+ $LOAD_PATH.each do |load_path|
3
+ svn_ext_path = File.join(load_path, "svn", "ext")
4
+ if File.exists?(svn_ext_path)
5
+ svn_ext_path_win = File.expand_path(svn_ext_path)
6
+ svn_ext_path_win = svn_ext_path.gsub(File::SEPARATOR, File::ALT_SEPARATOR)
7
+ unless ENV["PATH"].split(";").find {|path| path == svn_ext_path_win}
8
+ ENV["PATH"] = "#{svn_ext_path_win};#{ENV['PATH']}"
9
+ end
10
+ end
11
+ end
12
+ end
13
+
14
+ require 'tempfile'
15
+
16
+ unless respond_to?(:__send!)
17
+ module Kernel
18
+ alias __send! __send__
19
+ end
20
+ end
21
+
22
+ module Svn
23
+ module Util
24
+ module_function
25
+ def to_ruby_class_name(name)
26
+ name.split("_").collect do |x|
27
+ "#{x[0,1].upcase}#{x[1..-1].downcase}"
28
+ end.join("")
29
+ end
30
+
31
+ def to_ruby_const_name(name)
32
+ name.upcase
33
+ end
34
+
35
+ def valid_rev?(rev)
36
+ rev and rev >= 0
37
+ end
38
+
39
+ def copy?(copyfrom_path, copyfrom_rev)
40
+ Util.valid_rev?(copyfrom_rev) && !copyfrom_path.nil?
41
+ end
42
+
43
+ def hash_to_prop_array(hash)
44
+ hash.collect do |key, value|
45
+ Svn::Core::Prop.new(key, value)
46
+ end
47
+ end
48
+
49
+ def set_constants(ext_mod, target_mod=self)
50
+ target_name = nil
51
+ ext_mod.constants.each do |const|
52
+ target_name = nil
53
+ case const
54
+ when /^SVN__/
55
+ # ignore private constants
56
+ when /^SVN_(?:#{target_mod.name.split("::").last.upcase}_)?/
57
+ target_name = $POSTMATCH
58
+ when /^SWIG_SVN_/
59
+ target_name = $POSTMATCH
60
+ when /^Svn_(?:#{target_mod.name.split("::").last.downcase}_)?(.+)_t$/
61
+ target_name = to_ruby_class_name($1)
62
+ when /^Svn_(?:#{target_mod.name.split("::").last.downcase}_)?/
63
+ target_name = to_ruby_const_name($POSTMATCH)
64
+ # else
65
+ # puts const
66
+ end
67
+ unless target_name.nil?
68
+ target_mod.const_set(target_name, ext_mod.const_get(const))
69
+ end
70
+ end
71
+ end
72
+
73
+ def set_methods(ext_mod, target_mod=self)
74
+ target_name = nil
75
+ ext_mod.public_methods(false).each do |meth|
76
+ target_name = nil
77
+ case meth
78
+ when /^svn_(?:#{target_mod.name.split("::").last.downcase}_)?/
79
+ target_name = $POSTMATCH
80
+ when /^apr_/
81
+ target_name = meth
82
+ end
83
+ unless target_name.nil?
84
+ target_mod.module_eval(<<-EOC, __FILE__, __LINE__ + 1)
85
+ def #{target_name}(*args, &block)
86
+ #{ext_mod.name}.#{meth}(*args, &block)
87
+ end
88
+ module_function :#{target_name}
89
+ EOC
90
+ end
91
+ end
92
+ end
93
+
94
+ def filename_to_temp_file(filename)
95
+ file = Tempfile.new("svn-ruby")
96
+ file.binmode
97
+ file.print(File.open(filename, "rb") {|f| f.read})
98
+ file.close
99
+ file.open
100
+ file.binmode
101
+ file
102
+ end
103
+
104
+ def reset_message_directory
105
+ if /cygwin|mingw|mswin32|bccwin32/.match(RUBY_PLATFORM)
106
+ top_directory = File.join(File.dirname(__FILE__), "..", "..")
107
+ top_directory = File.expand_path(top_directory)
108
+ locale_directory = File.join(top_directory, "share", "locale")
109
+ locale_directory_win = locale_directory.tr(File::SEPARATOR,
110
+ File::ALT_SEPARATOR)
111
+ GetText.bindtextdomain(locale_directory_win)
112
+ end
113
+ end
114
+
115
+ def validate_options(options, optional_keys, required_keys=[])
116
+ unknown_keys = options.keys - (optional_keys + required_keys)
117
+ unless unknown_keys.empty?
118
+ raise(ArgumentError, "Unknown key(s): #{unknown_keys.join(", ")}")
119
+ end
120
+ missing_keys = []
121
+ required_keys.each do |key|
122
+ missing_keys << key if options[key].nil?
123
+ end
124
+ unless missing_keys.empty?
125
+ raise(ArgumentError, "Missing key(s): #{missing_keys.join(", ")}")
126
+ end
127
+ end
128
+ end
129
+ end