Rev 5071: (vila, in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Tue Mar 2 16:45:42 GMT 2010


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

------------------------------------------------------------
revno: 5071 [merge]
revision-id: pqm at pqm.ubuntu.com-20100302164538-yx0io3uv54l2o7im
parent: pqm at pqm.ubuntu.com-20100302144617-2vtu14t81e3acd8f
parent: v.ladeuil+lp at free.fr-20100302155628-n1f4y1wk7hg54k2e
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Tue 2010-03-02 16:45:38 +0000
message:
  (vila,
  	for parthm) mkdir don't create dirs outside working trees anymore
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
  bzrlib/tests/blackbox/test_versioning.py versioning.py-20050622071821-3ddf5e2e5e93c602
=== modified file 'NEWS'
--- a/NEWS	2010-03-02 10:21:39 +0000
+++ b/NEWS	2010-03-02 15:56:28 +0000
@@ -100,13 +100,16 @@
   prevents ``bzr status --short`` from crashing when those files are
   present.  (John Arbash Meinel, #303275)
 
-* Tolerate patches with leading noise in ``bzr-handle-patch``.
-  (Toshio Kuratomi, Martin Pool, #502076)
+* ``bzr mkdir DIR`` will not create DIR unless DIR's parent is a versioned
+   directory. (Parth Malwankar, #138600)
 
 * SSH child processes will now ignore SIGQUIT on nix systems so breaking into
   the debugger won't kill the session.
   (Martin <gzlist at googlemail.com>, #162502)
 
+* Tolerate patches with leading noise in ``bzr-handle-patch``.
+  (Toshio Kuratomi, Martin Pool, #502076)
+
 API Changes
 ***********
 

=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2010-03-01 16:18:43 +0000
+++ b/bzrlib/builtins.py	2010-03-02 15:56:28 +0000
@@ -699,10 +699,15 @@
 
     def run(self, dir_list):
         for d in dir_list:
-            os.mkdir(d)
             wt, dd = WorkingTree.open_containing(d)
-            wt.add([dd])
-            self.outf.write('added %s\n' % d)
+            base = os.path.dirname(dd)
+            id = wt.path2id(base)
+            if id != None:
+                os.mkdir(d)
+                wt.add([dd])
+                self.outf.write('added %s\n' % d)
+            else:
+                raise errors.NotVersionedError(path=base)
 
 
 class cmd_relpath(Command):

=== modified file 'bzrlib/tests/blackbox/test_versioning.py'
--- a/bzrlib/tests/blackbox/test_versioning.py	2009-08-28 05:00:33 +0000
+++ b/bzrlib/tests/blackbox/test_versioning.py	2010-03-02 15:49:51 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2005 Canonical Ltd
+# Copyright (C) 2005, 2006, 2007, 2009, 2010 Canonical Ltd
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -29,16 +29,29 @@
 from bzrlib.workingtree import WorkingTree
 
 
+class TestMkdir(TestCaseWithTransport):
+
+    def test_mkdir_fails_cleanly(self):
+        """'mkdir' fails cleanly when no working tree is available.
+        https://bugs.edge.launchpad.net/bzr/+bug/138600
+        """
+        # Since there is a safety working tree above us, we create a bare repo
+        # here locally.
+        shared_repo = self.make_repository('.')
+        self.run_bzr(['mkdir', 'abc'], retcode=3)
+        self.failIfExists('abc')
+
+
 class TestVersioning(TestCaseInTempDir):
 
     def test_mkdir(self):
         """Basic 'bzr mkdir' operation"""
 
         self.run_bzr('init')
-        self.run_bzr('mkdir foo')
+        self.run_bzr(['mkdir', 'foo'])
         self.assert_(os.path.isdir('foo'))
 
-        self.run_bzr('mkdir foo', retcode=3)
+        self.run_bzr(['mkdir', 'foo'], retcode=3)
 
         wt = WorkingTree.open('.')
 
@@ -54,12 +67,12 @@
         """'bzr mkdir' operation in subdirectory"""
 
         self.run_bzr('init')
-        self.run_bzr('mkdir dir')
+        self.run_bzr(['mkdir', 'dir'])
         self.assert_(os.path.isdir('dir'))
 
         os.chdir('dir')
         self.log('Run mkdir in subdir')
-        self.run_bzr('mkdir subdir')
+        self.run_bzr(['mkdir', 'subdir'])
         self.assert_(os.path.isdir('subdir'))
         os.chdir('..')
 
@@ -86,7 +99,7 @@
         self.run_bzr('init')
         os.chdir('../..')
 
-        self.run_bzr('mkdir dir a/dir a/b/dir')
+        self.run_bzr(['mkdir', 'dir', 'a/dir', 'a/b/dir'])
         self.failUnless(os.path.isdir('dir'))
         self.failUnless(os.path.isdir('a/dir'))
         self.failUnless(os.path.isdir('a/b/dir'))




More information about the bazaar-commits mailing list