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,628 @@
1
+ require "English"
2
+ require "tempfile"
3
+ require "svn/error"
4
+ require "svn/util"
5
+ require "svn/delta"
6
+ require "svn/ext/fs"
7
+
8
+ module Svn
9
+ module Fs
10
+ Util.set_constants(Ext::Fs, self)
11
+ Util.set_methods(Ext::Fs, self)
12
+
13
+ @@fs_pool = Svn::Core::Pool.new
14
+ initialize(@@fs_pool)
15
+
16
+ class << self
17
+ def modules
18
+ print_modules("")
19
+ end
20
+ end
21
+
22
+ @@alias_targets = %w(create delete open hotcopy recover)
23
+ class << self
24
+ @@alias_targets.each do |target|
25
+ alias_method "_#{target}", target
26
+ end
27
+ end
28
+ @@alias_targets.each do |target|
29
+ alias_method "_#{target}", target
30
+ end
31
+ @@alias_targets = nil
32
+
33
+ module_function
34
+ def create(path, config={}, &block)
35
+ _create(path, config, &block)
36
+ end
37
+
38
+ def delete(path)
39
+ Fs.delete_fs(path)
40
+ end
41
+
42
+ def open(path, config={}, &block)
43
+ _open(path, config, &block)
44
+ end
45
+
46
+ def hotcopy(src, dest, clean=false)
47
+ _hotcopy(src, dest, clean)
48
+ end
49
+
50
+ def recover(path, &cancel_func)
51
+ _recover(path, cancel_func)
52
+ end
53
+
54
+ FileSystem = SWIG::TYPE_p_svn_fs_t
55
+ class FileSystem
56
+ class << self
57
+ # For backward compatibility
58
+ def create(*args, &block)
59
+ Fs.create(*args, &block)
60
+ end
61
+
62
+ def delete(*args, &block)
63
+ Fs.delete(*args, &block)
64
+ end
65
+
66
+ def open(*args, &block)
67
+ Fs.open(*args, &block)
68
+ end
69
+ alias new open
70
+
71
+ def hotcopy(*args, &block)
72
+ Fs.hotcopy(*args, &block)
73
+ end
74
+
75
+ def recover(*args, &block)
76
+ Fs.recover(*args, &block)
77
+ end
78
+ end
79
+
80
+ def set_warning_func(&func)
81
+ Fs.set_warning_func_wrapper(self, func)
82
+ end
83
+
84
+ def path
85
+ Fs.path(self)
86
+ end
87
+
88
+ def open_txn(name)
89
+ Fs.open_txn(self, name)
90
+ end
91
+
92
+ def purge_txn(id)
93
+ Fs.purge_txn(self, id)
94
+ end
95
+
96
+ def transaction(rev=nil, flags=0)
97
+ txn = Fs.begin_txn2(self, rev || youngest_rev, flags)
98
+
99
+ if block_given?
100
+ yield(txn)
101
+ txn.commit if transactions.include?(txn.name)
102
+ else
103
+ txn
104
+ end
105
+ end
106
+
107
+ def youngest_revision
108
+ Fs.youngest_rev(self)
109
+ end
110
+ alias_method :youngest_rev, :youngest_revision
111
+
112
+ def deleted_revision(path, start_rev, end_rev)
113
+ Repos.deleted_rev(self, path, start_rev, end_rev)
114
+ end
115
+ alias_method :deleted_rev, :deleted_revision
116
+
117
+ def prop(name, rev=nil)
118
+ value = Fs.revision_prop(self, rev || youngest_rev, name)
119
+ if value and name == Svn::Core::PROP_REVISION_DATE
120
+ Time.parse_svn_format(value)
121
+ else
122
+ value
123
+ end
124
+ end
125
+
126
+ def set_prop(name, value, rev=nil)
127
+ Fs.change_rev_prop(self, rev || youngest_rev, name, value)
128
+ end
129
+
130
+ def proplist(rev=nil)
131
+ list = Fs.revision_proplist(self, rev || youngest_rev)
132
+ date_str = list[Svn::Core::PROP_REVISION_DATE]
133
+ if date_str
134
+ list[Svn::Core::PROP_REVISION_DATE] = Time.parse_svn_format(date_str)
135
+ end
136
+ list
137
+ end
138
+
139
+ def transactions
140
+ Fs.list_transactions(self)
141
+ end
142
+
143
+ def root(rev=nil)
144
+ Fs.revision_root(self, rev || youngest_rev)
145
+ end
146
+
147
+ def access
148
+ Fs.get_access(self)
149
+ end
150
+
151
+ def access=(new_access)
152
+ Fs.set_access(self, new_access)
153
+ end
154
+
155
+ def deltify_revision(rev=nil)
156
+ Fs.deltify_revision(self, rev || youngest_rev)
157
+ end
158
+
159
+ def uuid
160
+ Fs.get_uuid(self)
161
+ end
162
+
163
+ def uuid=(new_uuid)
164
+ Fs.set_uuid(self, new_uuid)
165
+ end
166
+
167
+ def lock(path, token=nil, comment=nil, dav_comment=true,
168
+ expiration_date=nil, current_rev=nil, steal_lock=false)
169
+ if expiration_date
170
+ expiration_date = expiration_date.to_apr_time
171
+ else
172
+ expiration_date = 0
173
+ end
174
+ current_rev ||= youngest_rev
175
+ Fs.lock(self, path, token, comment, dav_comment,
176
+ expiration_date, current_rev, steal_lock)
177
+ end
178
+
179
+ def unlock(path, token, break_lock=false)
180
+ Fs.unlock(self, path, token, break_lock)
181
+ end
182
+
183
+ def generate_lock_token
184
+ Fs.generate_lock_token(self)
185
+ end
186
+
187
+ def get_lock(path)
188
+ Fs.get_lock(self, path)
189
+ end
190
+
191
+ def get_locks(path)
192
+ locks = []
193
+ receiver = Proc.new do |lock|
194
+ locks << lock
195
+ yield(lock) if block_given?
196
+ end
197
+ Fs.get_locks(self, path, receiver)
198
+ locks
199
+ end
200
+
201
+ def history(path, start_rev, end_rev,
202
+ cross_copies=true, authz_read_func=nil)
203
+ hist = []
204
+ history_func = Proc.new do |path, revision|
205
+ yield(path, revision) if block_given?
206
+ hist << [path, revision]
207
+ end
208
+ Repos.history2(self, path, history_func,
209
+ authz_read_func, start_rev, end_rev,
210
+ cross_copies)
211
+ hist
212
+ end
213
+
214
+ def trace_node_locations(fs_path, location_revisions,
215
+ peg_rev=nil, &authz_read_func)
216
+ peg_rev ||= youngest_rev
217
+ Repos.trace_node_locations(self, fs_path, peg_rev,
218
+ location_revisions,
219
+ authz_read_func)
220
+ end
221
+ end
222
+
223
+ Access = SWIG::TYPE_p_svn_fs_access_t
224
+ class Access
225
+ class << self
226
+ def new(username)
227
+ Fs.create_access(username)
228
+ end
229
+ end
230
+
231
+ def username
232
+ Fs.access_get_username(self)
233
+ end
234
+
235
+ def add_lock_token(token)
236
+ Fs.access_add_lock_token(self, token)
237
+ end
238
+ end
239
+
240
+ Transaction = SWIG::TYPE_p_svn_fs_txn_t
241
+ class Transaction
242
+
243
+ def name
244
+ Fs.txn_name(self)
245
+ end
246
+
247
+ def prop(name)
248
+ value = Fs.txn_prop(self, name)
249
+ if name == Svn::Core::PROP_REVISION_DATE and value
250
+ value = Time.parse_svn_format(value)
251
+ end
252
+ value
253
+ end
254
+
255
+ def set_prop(name, value, validate=true)
256
+ if validate
257
+ Repos.fs_change_txn_prop(self, name, value)
258
+ else
259
+ Fs.change_txn_prop(self, name, value)
260
+ end
261
+ end
262
+
263
+ def base_revision
264
+ Fs.txn_base_revision(self)
265
+ end
266
+
267
+ def root
268
+ Fs.txn_root(self)
269
+ end
270
+
271
+ def proplist
272
+ list = Fs.txn_proplist(self)
273
+ date_str = list[Svn::Core::PROP_REVISION_DATE]
274
+ if list[Svn::Core::PROP_REVISION_DATE]
275
+ list[Svn::Core::PROP_REVISION_DATE] = Time.parse_svn_format(date_str)
276
+ end
277
+ list
278
+ end
279
+
280
+ def abort
281
+ Fs.abort_txn(self)
282
+ end
283
+
284
+ def commit
285
+ result = Fs.commit_txn(self)
286
+ if result.is_a?(Array)
287
+ result
288
+ else
289
+ [nil, result]
290
+ end
291
+ end
292
+ end
293
+
294
+
295
+ Root = SWIG::TYPE_p_svn_fs_root_t
296
+ class Root
297
+ attr_reader :editor
298
+
299
+ def dir?(path)
300
+ Fs.is_dir(self, path)
301
+ end
302
+
303
+ def file?(path)
304
+ Fs.is_file(self, path)
305
+ end
306
+
307
+ def base_revision
308
+ Fs.txn_root_base_revision(self)
309
+ end
310
+
311
+ def revision
312
+ Fs.revision_root_revision(self)
313
+ end
314
+
315
+ def name
316
+ Fs.txn_root_name(self)
317
+ end
318
+
319
+ def fs
320
+ Fs.root_fs_wrapper(self)
321
+ end
322
+
323
+ def node_id(path)
324
+ Fs.node_id(self, path)
325
+ end
326
+
327
+ def node_created_rev(path)
328
+ Fs.node_created_rev(self, path)
329
+ end
330
+
331
+ def node_created_path(path)
332
+ Fs.node_created_path(self, path)
333
+ end
334
+
335
+ def node_prop(path, key)
336
+ Fs.node_prop(self, path, key)
337
+ end
338
+
339
+ def set_node_prop(path, key, value, validate=true)
340
+ if validate
341
+ Repos.fs_change_node_prop(self, path, key, value)
342
+ else
343
+ Fs.change_node_prop(self, path, key, value)
344
+ end
345
+ end
346
+
347
+ def node_proplist(path)
348
+ Fs.node_proplist(self, path)
349
+ end
350
+ alias node_prop_list node_proplist
351
+
352
+ def check_path(path)
353
+ Fs.check_path(self, path)
354
+ end
355
+
356
+ def file_length(path)
357
+ Fs.file_length(self, path)
358
+ end
359
+
360
+ def file_md5_checksum(path)
361
+ Fs.file_md5_checksum(self, path)
362
+ end
363
+
364
+ def file_contents(path)
365
+ stream = Fs.file_contents(self, path)
366
+ if block_given?
367
+ begin
368
+ yield stream
369
+ ensure
370
+ stream.close
371
+ end
372
+ else
373
+ stream
374
+ end
375
+ end
376
+
377
+ def close
378
+ Fs.close_root(self)
379
+ end
380
+
381
+ def dir_entries(path)
382
+ entries = {}
383
+ Fs.dir_entries(self, path).each do |name, entry|
384
+ entries[name] = entry
385
+ end
386
+ entries
387
+ end
388
+
389
+ def dir_delta(src_path, src_entry, tgt_root, tgt_path,
390
+ editor, text_deltas=false, recurse=true,
391
+ entry_props=false, ignore_ancestry=false,
392
+ &authz_read_func)
393
+ Repos.dir_delta(self, src_path, src_entry, tgt_root,
394
+ tgt_path, editor, authz_read_func,
395
+ text_deltas, recurse, entry_props,
396
+ ignore_ancestry)
397
+ end
398
+
399
+ def replay(editor, base_dir=nil, low_water_mark=nil, send_deltas=false,
400
+ &callback)
401
+ base_dir ||= ""
402
+ low_water_mark ||= Core::INVALID_REVNUM
403
+ Repos.replay2(self, base_dir, low_water_mark, send_deltas,
404
+ editor, callback)
405
+ end
406
+
407
+ def copied_from(path)
408
+ Fs.copied_from(self, path)
409
+ end
410
+
411
+ def txn_root?
412
+ Fs.is_txn_root(self)
413
+ end
414
+
415
+ def revision_root?
416
+ Fs.is_revision_root(self)
417
+ end
418
+
419
+ def paths_changed
420
+ Fs.paths_changed(self)
421
+ end
422
+
423
+ def node_history(path)
424
+ Fs.node_history(self, path)
425
+ end
426
+
427
+ def props_changed?(path1, root2, path2)
428
+ Fs.props_changed(self, path1, root2, path2)
429
+ end
430
+
431
+ def merge(target_path, source_root, source_path,
432
+ ancestor_root, ancestor_path)
433
+ Fs.merge(source_root, source_path, self, target_path,
434
+ ancestor_root, ancestor_path)
435
+ end
436
+
437
+ def make_dir(path)
438
+ Fs.make_dir(self, path)
439
+ end
440
+
441
+ def delete(path)
442
+ Fs._delete(self, path)
443
+ end
444
+
445
+ def copy(to_path, from_root, from_path)
446
+ Fs.copy(from_root, from_path, self, to_path)
447
+ end
448
+
449
+ def revision_link(from_root, path)
450
+ Fs.revision_link(from_root, self, path)
451
+ end
452
+
453
+ def make_file(path)
454
+ Fs.make_file(self, path)
455
+ end
456
+
457
+ def apply_textdelta(path, base_checksum=nil, result_checksum=nil)
458
+ handler, handler_baton = Fs.apply_textdelta(self, path,
459
+ base_checksum,
460
+ result_checksum)
461
+ handler.baton = handler_baton
462
+ handler
463
+ end
464
+
465
+ def apply_text(path, result_checksum=nil)
466
+ Fs.apply_text(self, path, result_checksum)
467
+ end
468
+
469
+ def contents_changed?(path1, root2, path2)
470
+ Fs.contents_changed(self, path1, root2, path2)
471
+ end
472
+
473
+ def file_delta_stream(arg1, arg2, target_path)
474
+ if arg1.is_a?(self.class)
475
+ source_root = arg1
476
+ source_path = arg2
477
+ target_root = self
478
+ else
479
+ source_root = self
480
+ source_path = arg1
481
+ target_root = arg2
482
+ end
483
+ Fs.get_file_delta_stream(source_root, source_path,
484
+ target_root, target_path)
485
+ end
486
+
487
+ def stat(path)
488
+ Repos.stat(self, path)
489
+ end
490
+
491
+ def committed_info(path)
492
+ Repos.get_committed_info(self, path)
493
+ end
494
+
495
+ def closest_copy(path)
496
+ Fs.closest_copy(self, path)
497
+ end
498
+
499
+ def mergeinfo(paths, inherit=nil, include_descendants=false)
500
+ paths = [paths] unless paths.is_a?(Array)
501
+ Fs.get_mergeinfo(self, paths, inherit, include_descendants)
502
+ end
503
+
504
+ def change_mergeinfo(path, info)
505
+ Fs.change_mergeinfo(self, path, info)
506
+ end
507
+ end
508
+
509
+ History = SWIG::TYPE_p_svn_fs_history_t
510
+
511
+ class History
512
+ def location
513
+ Fs.history_location(self)
514
+ end
515
+
516
+ def prev(cross_copies=true)
517
+ Fs.history_prev(self, cross_copies)
518
+ end
519
+ end
520
+
521
+
522
+ DirectoryEntry = Dirent
523
+
524
+ Id = SWIG::TYPE_p_svn_fs_id_t
525
+ class Id
526
+ def to_s
527
+ unparse
528
+ end
529
+
530
+ def unparse
531
+ Fs.unparse_id(self)
532
+ end
533
+
534
+ def compare(other)
535
+ Fs.compare_ids(self, other)
536
+ end
537
+
538
+ def related?(other)
539
+ Fs.check_related(self, other)
540
+ end
541
+ end
542
+
543
+ class PathChange
544
+ def modify?
545
+ change_kind == Svn::Fs::PATH_CHANGE_MODIFY
546
+ end
547
+
548
+ def add?
549
+ change_kind == Svn::Fs::PATH_CHANGE_ADD
550
+ end
551
+
552
+ def text_mod?
553
+ text_mod
554
+ end
555
+ end
556
+
557
+ class FileDiff
558
+
559
+ def initialize(root1, path1, root2, path2)
560
+ @tempfile1 = nil
561
+ @tempfile2 = nil
562
+
563
+ @binary = nil
564
+
565
+ @root1 = root1
566
+ @path1 = path1
567
+ @root2 = root2
568
+ @path2 = path2
569
+ end
570
+
571
+ def binary?
572
+ if @binary.nil?
573
+ @binary = _binary?(@root1, @path1)
574
+ @binary ||= _binary?(@root2, @path2)
575
+ end
576
+ @binary
577
+ end
578
+
579
+ def files
580
+ if @tempfile1
581
+ [@tempfile1, @tempfile2]
582
+ else
583
+ @tempfile1 = Tempfile.new("svn_fs")
584
+ @tempfile2 = Tempfile.new("svn_fs")
585
+
586
+ dump_contents(@tempfile1, @root1, @path1)
587
+ dump_contents(@tempfile2, @root2, @path2)
588
+
589
+ [@tempfile1, @tempfile2]
590
+ end
591
+ end
592
+
593
+ def diff
594
+ files
595
+ @diff ||= Core::Diff.file_diff(@tempfile1.path, @tempfile2.path)
596
+ end
597
+
598
+ def unified(label1, label2, header_encoding=nil)
599
+ if diff and diff.diff?
600
+ diff.unified(label1, label2, header_encoding)
601
+ else
602
+ ""
603
+ end
604
+ end
605
+
606
+ private
607
+ def dump_contents(tempfile, root, path)
608
+ if root and path
609
+ begin
610
+ tempfile.open
611
+ root.file_contents(path) do |stream|
612
+ tempfile.print(stream.read)
613
+ end
614
+ ensure
615
+ tempfile.close
616
+ end
617
+ end
618
+ end
619
+
620
+ def _binary?(root, path)
621
+ if root and path
622
+ prop = root.node_prop(path, Core::PROP_MIME_TYPE)
623
+ prop and Core.binary_mime_type?(prop)
624
+ end
625
+ end
626
+ end
627
+ end
628
+ end