Rev 3032: Mark .bzr directories as "hidden" on Windows (#71147) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Tue Nov 27 01:04:20 GMT 2007


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

------------------------------------------------------------
revno: 3032
revision-id:pqm at pqm.ubuntu.com-20071127010418-gbuxg943nyu8vefz
parent: pqm at pqm.ubuntu.com-20071126224137-gnhd7r5hx7f0064k
parent: bialix at ukr.net-20071127000416-4ruwdemf42kqbzm4
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Tue 2007-11-27 01:04:18 +0000
message:
  Mark .bzr directories as "hidden" on Windows (#71147)
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
  bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
  bzrlib/win32utils.py           win32console.py-20051021033308-123c6c929d04973d
    ------------------------------------------------------------
    revno: 3023.1.4
    revision-id:bialix at ukr.net-20071127000416-4ruwdemf42kqbzm4
    parent: bialix at ukr.net-20071126234215-dwyxq2ww5sg3xzua
    parent: pqm at pqm.ubuntu.com-20071126224137-gnhd7r5hx7f0064k
    committer: Alexander Belchenko <bialix at ukr.net>
    branch nick: hidden.dot.bzr
    timestamp: Tue 2007-11-27 02:04:16 +0200
    message:
      merge bzr.dev
    renamed:
      doc/developers/knitpack.txt => doc/developers/packrepo.txt knitpack.txt-20071023074744-q0g5u8me8gk5zbtb-1
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
      bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
      bzrlib/lru_cache.py            lru_cache.py-20070119165515-tlw203kuwh0id5gv-1
      bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
      bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/smart/branch.py         branch.py-20061124031907-mzh3pla28r83r97f-1
      bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
      bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
      bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
      bzrlib/tests/branch_implementations/test_break_lock.py test_break_lock.py-20060504111902-9aae411dbe9aadd2
      bzrlib/tests/branch_implementations/test_locking.py test_locking.py-20060707151933-tav3o2hpibwi53u4-4
      bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
      bzrlib/tests/ftp_server.py     ftpserver.py-20071019102346-61jbvdkrr70igauv-1
      bzrlib/tests/interrepository_implementations/__init__.py __init__.py-20060220054744-baf49a1f88f17b1a
      bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
      bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
      bzrlib/tests/test_info.py      test_info.py-20070320150933-m0xxm1g7xi9v6noe-1
      bzrlib/tests/test_lru_cache.py test_lru_cache.py-20070119165535-hph6rk4h9rzy4180-1
      bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
      bzrlib/tests/test_revert.py    test_revert.py-20060828180832-fqb1v6ecpyvnlitj-1
      bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
      bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
      bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
      bzrlib/tests/workingtree_implementations/test_break_lock.py test_break_lock.py-20060504115740-233e245df546fd42
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
      bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
      doc/en/user-reference/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
      doc/developers/packrepo.txt    knitpack.txt-20071023074744-q0g5u8me8gk5zbtb-1
    ------------------------------------------------------------
    revno: 3023.1.3
    revision-id:bialix at ukr.net-20071126234215-dwyxq2ww5sg3xzua
    parent: bialix at ukr.net-20071126085441-lx9pwr0gcahikyp4
    committer: Alexander Belchenko <bialix at ukr.net>
    branch nick: hidden.dot.bzr
    timestamp: Tue 2007-11-27 01:42:15 +0200
    message:
      John's review
    modified:
      bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
    ------------------------------------------------------------
    revno: 3023.1.2
    revision-id:bialix at ukr.net-20071126085441-lx9pwr0gcahikyp4
    parent: bialix at ukr.net-20071126080822-iel61wjqbkju9s0v
    committer: Alexander Belchenko <bialix at ukr.net>
    branch nick: hidden.dot.bzr
    timestamp: Mon 2007-11-26 10:54:41 +0200
    message:
      Martin's review.
    modified:
      bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
      bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
      bzrlib/win32utils.py           win32console.py-20051021033308-123c6c929d04973d
    ------------------------------------------------------------
    revno: 3023.1.1
    revision-id:bialix at ukr.net-20071126080822-iel61wjqbkju9s0v
    parent: pqm at pqm.ubuntu.com-20071125173141-g89p6qnnh90tk5zi
    committer: Alexander Belchenko <bialix at ukr.net>
    branch nick: hidden.dot.bzr
    timestamp: Mon 2007-11-26 10:08:22 +0200
    message:
      Mark .bzr directories as "hidden" on Windows (#71147)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
      bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
=== modified file 'NEWS'
--- a/NEWS	2007-11-26 19:54:09 +0000
+++ b/NEWS	2007-11-27 00:04:16 +0000
@@ -104,6 +104,9 @@
    * Make sure Repository.fetch(self) is properly a no-op for all
      Repository implementations. (John Arbash Meinel, #158333)
 
+   * Mark .bzr directories as "hidden" on Windows.
+     (Alexander Belchenko, #71147)
+
    * ``merge --uncommitted`` can now operate on a single file.
      (Aaron Bentley, Lukáš Lalinský, #136890)
 

=== modified file 'bzrlib/bzrdir.py'
--- a/bzrlib/bzrdir.py	2007-11-26 21:33:20 +0000
+++ b/bzrlib/bzrdir.py	2007-11-27 00:04:16 +0000
@@ -29,6 +29,7 @@
 
 from cStringIO import StringIO
 import os
+import sys
 
 from bzrlib.lazy_import import lazy_import
 lazy_import(globals(), """
@@ -48,10 +49,11 @@
     symbol_versioning,
     ui,
     urlutils,
+    win32utils,
+    workingtree,
+    workingtree_4,
     xml4,
     xml5,
-    workingtree,
-    workingtree_4,
     )
 from bzrlib.osutils import (
     sha_strings,
@@ -1355,6 +1357,8 @@
                                       # FIXME: RBC 20060121 don't peek under
                                       # the covers
                                       mode=temp_control._dir_mode)
+        if sys.platform == 'win32' and isinstance(transport, LocalTransport):
+            win32utils.set_file_attr_hidden(transport._abspath('.bzr'))
         file_mode = temp_control._file_mode
         del temp_control
         mutter('created control directory in ' + transport.base)

=== modified file 'bzrlib/tests/test_bzrdir.py'
--- a/bzrlib/tests/test_bzrdir.py	2007-10-25 02:06:19 +0000
+++ b/bzrlib/tests/test_bzrdir.py	2007-11-26 23:42:15 +0000
@@ -21,6 +21,8 @@
 
 import os.path
 from StringIO import StringIO
+import subprocess
+import sys
 
 from bzrlib import (
     bzrdir,
@@ -29,6 +31,7 @@
     repository,
     symbol_versioning,
     urlutils,
+    win32utils,
     workingtree,
     )
 import bzrlib.branch
@@ -42,6 +45,7 @@
 from bzrlib.tests import (
     TestCase,
     TestCaseWithTransport,
+    TestSkipped,
     test_sftp_transport
     )
 from bzrlib.tests.HttpServer import HttpServer
@@ -870,3 +874,32 @@
     """Tests redirections for pycurl implementation"""
 
     _qualifier = 'pycurl'
+
+
+class TestDotBzrHidden(TestCaseWithTransport):
+
+    ls = ['ls']
+    if sys.platform == 'win32':
+        ls = [os.environ['COMSPEC'], '/C', 'dir', '/B']
+
+    def get_ls(self):
+        f = subprocess.Popen(self.ls, stdout=subprocess.PIPE,
+            stderr=subprocess.PIPE)
+        out, err = f.communicate()
+        self.assertEqual(0, f.returncode, 'Calling %s failed: %s'
+                         % (self.ls, err))
+        return out.splitlines()
+
+    def test_dot_bzr_hidden(self):
+        if sys.platform == 'win32' and not win32utils.has_win32file:
+            raise TestSkipped('unable to make file hidden without pywin32 library')
+        b = bzrdir.BzrDir.create('.')
+        self.build_tree('a')
+        self.assertEquals(['a'], self.get_ls())
+
+    def test_dot_bzr_hidden_with_url(self):
+        if sys.platform == 'win32' and not win32utils.has_win32file:
+            raise TestSkipped('unable to make file hidden without pywin32 library')
+        b = bzrdir.BzrDir.create(urlutils.local_path_to_url('.'))
+        self.build_tree('a')
+        self.assertEquals(['a'], self.get_ls())

=== modified file 'bzrlib/win32utils.py'
--- a/bzrlib/win32utils.py	2007-08-11 05:44:04 +0000
+++ b/bzrlib/win32utils.py	2007-11-26 08:54:41 +0000
@@ -64,6 +64,11 @@
     else:
         create_buffer = ctypes.create_unicode_buffer
         suffix = 'W'
+try:
+    import win32file
+    has_win32file = True
+except ImportError:
+    has_win32file = False
 
 
 # Special Win32 API constants
@@ -319,3 +324,9 @@
         _winreg.CloseKey(hkey)
 
     return fullpath
+
+
+def set_file_attr_hidden(path):
+    """Set file attributes to hidden if possible"""
+    if has_win32file:
+        win32file.SetFileAttributes(path, win32file.FILE_ATTRIBUTE_HIDDEN)




More information about the bazaar-commits mailing list