At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 3881
revision-id: [EMAIL PROTECTED]
parent: [EMAIL PROTECTED]
parent: [EMAIL PROTECTED]
committer: Canonical.com Patch Queue Manager <[EMAIL PROTECTED]>
branch nick: +trunk
timestamp: Fri 2008-12-05 17:21:36 +0000
message:
  (Jelmer) Add BzrDir.backup_bzrdir().
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
  bzrlib/tests/bzrdir_implementations/test_bzrdir.py 
test_bzrdir.py-20060131065642-0ebeca5e30e30866
  bzrlib/upgrade.py              
history2weaves.py-20050818063535-e7d319791c19a8b2
    ------------------------------------------------------------
    revno: 3872.3.3
    revision-id: [EMAIL PROTECTED]
    parent: [EMAIL PROTECTED]
    committer: Jelmer Vernooij <[EMAIL PROTECTED]>
    branch nick: backup-bzrdir
    timestamp: Fri 2008-12-05 03:42:39 +0100
    message:
      Add test for backup_bzrdir.
    modified:
      bzrlib/tests/bzrdir_implementations/test_bzrdir.py 
test_bzrdir.py-20060131065642-0ebeca5e30e30866
    ------------------------------------------------------------
    revno: 3872.3.2
    revision-id: [EMAIL PROTECTED]
    parent: [EMAIL PROTECTED]
    committer: Jelmer Vernooij <[EMAIL PROTECTED]>
    branch nick: backup-bzrdir
    timestamp: Fri 2008-12-05 02:41:55 +0100
    message:
      make backup_bzrdir determine the name for the backup files.
    modified:
      bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
      bzrlib/upgrade.py              
history2weaves.py-20050818063535-e7d319791c19a8b2
    ------------------------------------------------------------
    revno: 3872.3.1
    revision-id: [EMAIL PROTECTED]
    parent: [EMAIL PROTECTED]
    committer: Jelmer Vernooij <[EMAIL PROTECTED]>
    branch nick: bzr.dev
    timestamp: Sat 2008-11-29 16:13:31 +0100
    message:
      Allow BzrDir implementation to implement backing up of control directory.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
      bzrlib/upgrade.py              
history2weaves.py-20050818063535-e7d319791c19a8b2
=== modified file 'NEWS'
--- a/NEWS      2008-12-05 15:34:02 +0000
+++ b/NEWS      2008-12-05 17:21:36 +0000
@@ -15,6 +15,9 @@
   IMPROVEMENTS:
 
   BUG FIXES:
+  
+   * Allow BzrDir implementation to implement backing up of 
+     control directory. (#139691)
 
     * Fix SystemError in ``_patiencediff_c`` module by calling
       PyErr_NoMemory() before returning NULL in PatienceSequenceMatcher_new.

=== modified file 'bzrlib/bzrdir.py'
--- a/bzrlib/bzrdir.py  2008-12-01 19:07:21 +0000
+++ b/bzrlib/bzrdir.py  2008-12-05 17:21:36 +0000
@@ -516,6 +516,15 @@
         """
         raise NotImplementedError(self.create_workingtree)
 
+    def backup_bzrdir(self):
+        """Backup this bzr control directory.
+        
+        :return: Tuple with old path name and new path name
+        """
+        self.root_transport.copy_tree('.bzr', 'backup.bzr')
+        return (self.root_transport.abspath('.bzr'),
+                self.root_transport.abspath('backup.bzr'))
+
     def retire_bzrdir(self, limit=10000):
         """Permanently disable the bzrdir.
 

=== modified file 'bzrlib/tests/bzrdir_implementations/test_bzrdir.py'
--- a/bzrlib/tests/bzrdir_implementations/test_bzrdir.py        2008-08-28 
20:51:27 +0000
+++ b/bzrlib/tests/bzrdir_implementations/test_bzrdir.py        2008-12-05 
02:42:39 +0000
@@ -28,11 +28,13 @@
     bzrdir,
     errors,
     lockdir,
+    osutils,
     repository,
     revision as _mod_revision,
     transactions,
     transport,
     ui,
+    urlutils,
     workingtree,
     )
 from bzrlib.branch import Branch, needs_read_lock, needs_write_lock
@@ -1476,6 +1478,27 @@
                 format=dir._format), bzrdir.Converter))
         dir.needs_format_conversion(None)
 
+    def test_backup_copies_existing(self):
+        tree = self.make_branch_and_tree('test')
+        self.build_tree(['test/a'])
+        tree.add(['a'], ['a-id'])
+        tree.commit('some data to be copied.')
+        old_url, new_url = tree.bzrdir.backup_bzrdir()
+        old_path = urlutils.local_path_from_url(old_url)
+        new_path = urlutils.local_path_from_url(new_url)
+        self.failUnlessExists(old_path)
+        self.failUnlessExists(new_path)
+        for (((dir_relpath1, _), entries1), 
+             ((dir_relpath2, _), entries2)) in izip(
+                osutils.walkdirs(old_path), 
+                osutils.walkdirs(new_path)):
+            self.assertEquals(dir_relpath1, dir_relpath2)
+            for f1, f2 in zip(entries1, entries2):
+                self.assertEquals(f1[0], f2[0])
+                self.assertEquals(f1[2], f2[2])
+                if f1[2] == "file":
+                    osutils.compare_files(open(f1[4]), open(f2[4]))
+
     def test_upgrade_new_instance(self):
         """Does an available updater work?"""
         dir = self.make_bzrdir('.')

=== modified file 'bzrlib/upgrade.py'
--- a/bzrlib/upgrade.py 2008-08-07 00:25:38 +0000
+++ b/bzrlib/upgrade.py 2008-12-05 01:41:55 +0000
@@ -75,10 +75,8 @@
 
     def _backup_control_dir(self):
         self.pb.note('making backup of tree history')
-        self.transport.copy_tree('.bzr', 'backup.bzr')
-        self.pb.note('%s.bzr has been backed up to %sbackup.bzr',
-             self.transport.base,
-             self.transport.base)
+        old_path, new_path = self.bzrdir.backup_bzrdir()
+        self.pb.note('%s has been backed up to %s', old_path, new_path)
         self.pb.note('if conversion fails, you can move this directory back to 
.bzr')
         self.pb.note('if it succeeds, you can remove this directory if you 
wish')
 


-- 
bazaar-commits mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/bazaar-commits

Reply via email to