Rev 5048: (mbp, for parthm) copy to backup.bzr.~N~ before upgrading in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Thu Feb 18 04:04:20 GMT 2010


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

------------------------------------------------------------
revno: 5048 [merge]
revision-id: pqm at pqm.ubuntu.com-20100218040419-l1gkx8dm60czagfq
parent: pqm at pqm.ubuntu.com-20100218033337-ugvgcd1fxq2i9b9h
parent: mbp at sourcefrog.net-20100218023923-nt9prcagtj0j7kvs
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2010-02-18 04:04:19 +0000
message:
  (mbp, for parthm) copy to backup.bzr.~N~ before upgrading
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
  bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
  bzrlib/tests/blackbox/test_upgrade.py test_upgrade.py-20060120060132-b41e5ed2f886ad28
  bzrlib/tests/test_upgrade.py   test_upgrade.py-20051004040251-555fe1d2bae1bc71
=== modified file 'NEWS'
--- a/NEWS	2010-02-18 03:33:37 +0000
+++ b/NEWS	2010-02-18 04:04:19 +0000
@@ -78,6 +78,11 @@
   prevents ``bzr status --short`` from crashing when those files are
   present.  (John Arbash Meinel, #303275)
 
+* ``bzr upgrade`` now names backup directory as ``backup.bzr.~N~`` instead
+  of ``backup.bzr``. This directory is ignored by bzr commands such as
+  ``add``.
+  (Parth Malwankar, #335033, #300001)
+
 API Changes
 ***********
 

=== modified file 'bzrlib/bzrdir.py'
--- a/bzrlib/bzrdir.py	2010-02-16 00:53:04 +0000
+++ b/bzrlib/bzrdir.py	2010-02-18 04:04:19 +0000
@@ -580,6 +580,15 @@
 
         :return: Tuple with old path name and new path name
         """
+        def name_gen(base='backup.bzr'):
+            counter = 1
+            name = "%s.~%d~" % (base, counter)
+            while self.root_transport.has(name):
+                counter += 1
+                name = "%s.~%d~" % (base, counter)
+            return name
+
+        backup_dir=name_gen()
         pb = ui.ui_factory.nested_progress_bar()
         try:
             # FIXME: bug 300001 -- the backup fails if the backup directory
@@ -589,9 +598,9 @@
             # FIXME: bug 262450 -- the backup directory should have the same
             # permissions as the .bzr directory (probably a bug in copy_tree)
             old_path = self.root_transport.abspath('.bzr')
-            new_path = self.root_transport.abspath('backup.bzr')
+            new_path = self.root_transport.abspath(backup_dir)
             ui.ui_factory.note('making backup of %s\n  to %s' % (old_path, new_path,))
-            self.root_transport.copy_tree('.bzr', 'backup.bzr')
+            self.root_transport.copy_tree('.bzr', backup_dir)
             return (old_path, new_path)
         finally:
             pb.finished()

=== modified file 'bzrlib/tests/blackbox/test_info.py'
--- a/bzrlib/tests/blackbox/test_info.py	2010-02-11 09:27:55 +0000
+++ b/bzrlib/tests/blackbox/test_info.py	2010-02-18 02:39:23 +0000
@@ -212,8 +212,8 @@
          0 added
          0 removed
          0 renamed
-         1 unknown
-         0 ignored
+         0 unknown
+         1 ignored
          0 versioned subdirectories
 
 Branch history:
@@ -380,8 +380,8 @@
          0 added
          0 removed
          0 renamed
-         1 unknown
-         0 ignored
+         0 unknown
+         1 ignored
          0 versioned subdirectories
 
 Branch history:

=== modified file 'bzrlib/tests/blackbox/test_upgrade.py'
--- a/bzrlib/tests/blackbox/test_upgrade.py	2010-01-25 17:48:22 +0000
+++ b/bzrlib/tests/blackbox/test_upgrade.py	2010-02-15 11:28:35 +0000
@@ -101,17 +101,18 @@
         url = get_transport(self.get_url('format_5_branch')).base
         # check --format takes effect
         bzrdir.BzrDirFormat._set_default_format(bzrdir.BzrDirFormat5())
+        backup_dir = 'backup.bzr.~1~'
         (out, err) = self.run_bzr(
             ['upgrade', '--format=metaweave', url])
         self.assertEqualDiff("""starting upgrade of %s
 making backup of %s.bzr
-  to %sbackup.bzr
+  to %s%s
 starting upgrade from format 5 to 6
 adding prefixes to weaves
 adding prefixes to revision-store
 starting upgrade from format 6 to metadir
 finished
-""" % (url, url, url), out)
+""" % (url, url, url, backup_dir), out)
         self.assertEqualDiff("", err)
         self.assertTrue(isinstance(
             bzrdir.BzrDir.open(self.get_url('format_5_branch'))._format,
@@ -124,15 +125,16 @@
         url = get_transport(self.get_url('metadir_weave_branch')).base
         # check --format takes effect
         bzrdir.BzrDirFormat._set_default_format(bzrdir.BzrDirFormat5())
+        backup_dir = 'backup.bzr.~1~'
         (out, err) = self.run_bzr(
             ['upgrade', '--format=knit', url])
         self.assertEqualDiff("""starting upgrade of %s
 making backup of %s.bzr
-  to %sbackup.bzr
+  to %s%s
 starting repository conversion
 repository converted
 finished
-""" % (url, url, url), out)
+""" % (url, url, url, backup_dir), out)
         self.assertEqualDiff("", err)
         converted_dir = bzrdir.BzrDir.open(self.get_url('metadir_weave_branch'))
         self.assertTrue(isinstance(converted_dir._format,
@@ -145,6 +147,33 @@
         self.run_bzr('upgrade --format=knit repo')
 
 
+    def test_upgrade_with_existing_backup_dir(self):
+        self.make_format_5_branch()
+        transport = get_transport(self.get_url('format_5_branch'))
+        url = transport.base
+        bzrdir.BzrDirFormat._set_default_format(bzrdir.BzrDirFormat5())
+        backup_dir1 = 'backup.bzr.~1~'
+        backup_dir2 = 'backup.bzr.~2~'
+        # explicitly create backup_dir1. bzr should create the .~2~ directory
+        # as backup
+        transport.mkdir(backup_dir1)
+        (out, err) = self.run_bzr(
+            ['upgrade', '--format=metaweave', url])
+        self.assertEqualDiff("""starting upgrade of %s
+making backup of %s.bzr
+  to %s%s
+starting upgrade from format 5 to 6
+adding prefixes to weaves
+adding prefixes to revision-store
+starting upgrade from format 6 to metadir
+finished
+""" % (url, url, url, backup_dir2), out)
+        self.assertEqualDiff("", err)
+        self.assertTrue(isinstance(
+            bzrdir.BzrDir.open(self.get_url('format_5_branch'))._format,
+            bzrdir.BzrDirMetaFormat1))
+        self.assertTrue(transport.has(backup_dir2))
+
 class SFTPTests(TestCaseWithSFTPServer):
     """Tests for upgrade over sftp."""
 
@@ -153,14 +182,15 @@
         t = get_transport(self.get_url())
         url = t.base
         out, err = self.run_bzr(['upgrade', '--format=knit', url])
+        backup_dir = 'backup.bzr.~1~'
         self.assertEqualDiff("""starting upgrade of %s
 making backup of %s.bzr
-  to %sbackup.bzr
+  to %s%s
 starting upgrade from format 6 to metadir
 starting repository conversion
 repository converted
 finished
-""" % (url, url, url), out)
+""" % (url, url, url,backup_dir), out)
         self.assertEqual('', err)
 
 

=== modified file 'bzrlib/tests/test_upgrade.py'
--- a/bzrlib/tests/test_upgrade.py	2010-02-10 17:52:08 +0000
+++ b/bzrlib/tests/test_upgrade.py	2010-02-15 10:46:49 +0000
@@ -79,27 +79,28 @@
         finally:
             rt.unlock()
         # check a backup was made:
+        backup_dir = 'backup.bzr.~1~'
         transport = get_transport(b.base)
-        transport.stat('backup.bzr')
-        transport.stat('backup.bzr/README')
-        transport.stat('backup.bzr/branch-format')
-        transport.stat('backup.bzr/revision-history')
-        transport.stat('backup.bzr/merged-patches')
-        transport.stat('backup.bzr/pending-merged-patches')
-        transport.stat('backup.bzr/pending-merges')
-        transport.stat('backup.bzr/branch-name')
-        transport.stat('backup.bzr/branch-lock')
-        transport.stat('backup.bzr/inventory')
-        transport.stat('backup.bzr/stat-cache')
-        transport.stat('backup.bzr/text-store')
-        transport.stat('backup.bzr/text-store/foo-20051004035611-1591048e9dc7c2d4.gz')
-        transport.stat('backup.bzr/text-store/foo-20051004035756-4081373d897c3453.gz')
-        transport.stat('backup.bzr/inventory-store/')
-        transport.stat('backup.bzr/inventory-store/mbp at sourcefrog.net-20051004035611-176b16534b086b3c.gz')
-        transport.stat('backup.bzr/inventory-store/mbp at sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
-        transport.stat('backup.bzr/revision-store/')
-        transport.stat('backup.bzr/revision-store/mbp at sourcefrog.net-20051004035611-176b16534b086b3c.gz')
-        transport.stat('backup.bzr/revision-store/mbp at sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
+        transport.stat(backup_dir)
+        transport.stat(backup_dir + '/README')
+        transport.stat(backup_dir + '/branch-format')
+        transport.stat(backup_dir + '/revision-history')
+        transport.stat(backup_dir + '/merged-patches')
+        transport.stat(backup_dir + '/pending-merged-patches')
+        transport.stat(backup_dir + '/pending-merges')
+        transport.stat(backup_dir + '/branch-name')
+        transport.stat(backup_dir + '/branch-lock')
+        transport.stat(backup_dir + '/inventory')
+        transport.stat(backup_dir + '/stat-cache')
+        transport.stat(backup_dir + '/text-store')
+        transport.stat(backup_dir + '/text-store/foo-20051004035611-1591048e9dc7c2d4.gz')
+        transport.stat(backup_dir + '/text-store/foo-20051004035756-4081373d897c3453.gz')
+        transport.stat(backup_dir + '/inventory-store/')
+        transport.stat(backup_dir + '/inventory-store/mbp at sourcefrog.net-20051004035611-176b16534b086b3c.gz')
+        transport.stat(backup_dir + '/inventory-store/mbp at sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
+        transport.stat(backup_dir + '/revision-store/')
+        transport.stat(backup_dir + '/revision-store/mbp at sourcefrog.net-20051004035611-176b16534b086b3c.gz')
+        transport.stat(backup_dir + '/revision-store/mbp at sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
 
     def test_upgrade_with_ghosts(self):
         """Upgrade v0.0.4 tree containing ghost references.
@@ -157,7 +158,7 @@
         self.assertFalse(transport.has('.bzr/stat-cache'))
         # XXX: upgrade fails if a backup.bzr is already present
         # -- David Allouche 2006-08-11
-        transport.delete_tree('backup.bzr')
+        transport.delete_tree('backup.bzr.~1~')
         # At this point, we have a format6 branch without checkout files.
         upgrade('.', bzrdir.BzrDirMetaFormat1())
         # The upgrade should not have set up a working tree.




More information about the bazaar-commits mailing list