364
364
# --create-prefix option ?)
365
365
changes = self.tree.changes_from(from_tree)
366
366
with self.tree.lock_read():
367
for change in changes.removed:
368
if self.is_ignored(change.path[0]):
367
for (path, id, kind) in changes.removed:
368
if self.is_ignored(path):
369
369
if not self.quiet:
370
self.outf.write('Ignoring %s\n' % change.path[0])
370
self.outf.write('Ignoring %s\n' % path)
372
if change.kind[0] == 'file':
373
self.delete_remote_file(change.path[0])
374
elif change.kind[0] == 'directory':
375
self.delete_remote_dir_maybe(change.path[0])
376
elif change.kind[0] == 'symlink':
377
self.delete_remote_file(change.path[0])
373
self.delete_remote_file(path)
374
elif kind == 'directory':
375
self.delete_remote_dir_maybe(path)
376
elif kind == 'symlink':
377
self.delete_remote_file(path)
379
379
raise NotImplementedError
381
for change in changes.renamed:
382
if self.is_ignored(change.path[0]) and self.is_ignored(change.path[1]):
381
for (old_path, new_path, id, kind,
382
content_change, exec_change) in changes.renamed:
383
if self.is_ignored(old_path) and self.is_ignored(new_path):
383
384
if not self.quiet:
384
self.outf.write('Ignoring %s\n' % change.path[0])
385
self.outf.write('Ignoring %s\n' % change.path[1])
385
self.outf.write('Ignoring %s\n' % old_path)
386
self.outf.write('Ignoring %s\n' % new_path)
387
if change.changed_content:
388
# We update the change.path[0] content because renames and
389
# We update the old_path content because renames and
389
390
# deletions are differed.
390
self.upload_file(change.path[0], change.path[1])
391
self.rename_remote(change.path[0], change.path[1])
391
self.upload_file(old_path, new_path)
392
self.rename_remote(old_path, new_path)
392
393
self.finish_renames()
393
394
self.finish_deletions()
395
for change in changes.kind_changed:
396
if self.is_ignored(change.path[1]):
398
self.outf.write('Ignoring %s\n' % change.path[1])
400
if change.kind[0] in ('file', 'symlink'):
401
self.delete_remote_file(change.path[0])
402
elif change.kind[0] == 'directory':
403
self.delete_remote_dir(change.path[0])
405
raise NotImplementedError
407
if change.kind[1] == 'file':
408
self.upload_file(change.path[1], change.path[1])
409
elif change.kind[1] == 'symlink':
410
target = self.tree.get_symlink_target(change.path[1])
411
self.upload_symlink(change.path[1], target)
412
elif change.kind[1] == 'directory':
413
self.make_remote_dir(change.path[1])
415
raise NotImplementedError
417
for change in changes.added + changes.copied:
418
if self.is_ignored(change.path[1]):
420
self.outf.write('Ignoring %s\n' % change.path[1])
422
if change.kind[1] == 'file':
423
self.upload_file(change.path[1], change.path[1])
424
elif change.kind[1] == 'directory':
425
self.make_remote_dir(change.path[1])
426
elif change.kind[1] == 'symlink':
427
target = self.tree.get_symlink_target(change.path[1])
396
for (path, id, old_kind, new_kind) in changes.kind_changed:
397
if self.is_ignored(path):
399
self.outf.write('Ignoring %s\n' % path)
401
if old_kind in ('file', 'symlink'):
402
self.delete_remote_file(path)
403
elif old_kind == 'directory':
404
self.delete_remote_dir(path)
406
raise NotImplementedError
408
if new_kind == 'file':
409
self.upload_file(path, path)
410
elif new_kind == 'symlink':
411
target = self.tree.get_symlink_target(path)
412
self.upload_symlink(path, target)
413
elif new_kind == 'directory':
414
self.make_remote_dir(path)
416
raise NotImplementedError
418
for (path, id, kind) in changes.added:
419
if self.is_ignored(path):
421
self.outf.write('Ignoring %s\n' % path)
424
self.upload_file(path, path)
425
elif kind == 'directory':
426
self.make_remote_dir(path)
427
elif kind == 'symlink':
428
target = self.tree.get_symlink_target(path)
429
self.upload_symlink(change.path[1], target)
430
self.upload_symlink(path, target)
430
431
except errors.TransportNotPossible:
431
432
if not self.quiet:
432
433
self.outf.write('Not uploading symlink %s -> %s\n'
433
% (change.path[1], target))
435
436
raise NotImplementedError
437
438
# XXX: Add a test for exec_change
438
for change in changes.modified:
439
if self.is_ignored(change.path[1]):
440
content_change, exec_change) in changes.modified:
441
if self.is_ignored(path):
440
442
if not self.quiet:
441
self.outf.write('Ignoring %s\n' % change.path[1])
443
self.outf.write('Ignoring %s\n' % path)
443
if change.kind[1] == 'file':
444
self.upload_file(change.path[1], change.path[1])
445
elif change.kind[1] == 'symlink':
446
target = self.tree.get_symlink_target(change.path[1])
447
self.upload_symlink(change.path[1], target)
446
self.upload_file(path, path)
447
elif kind == 'symlink':
448
target = self.tree.get_symlink_target(path)
449
self.upload_symlink(path, target)
449
451
raise NotImplementedError