Selaa lähdekoodia

Add support for core.protectNTFS.

Jelmer Vernooij 10 vuotta sitten
vanhempi
commit
2a3ce7b780
3 muutettua tiedostoa jossa 29 lisäystä ja 11 poistoa
  1. 7 0
      NEWS
  2. 3 6
      dulwich/porcelain.py
  3. 19 5
      dulwich/repo.py

+ 7 - 0
NEWS

@@ -11,6 +11,13 @@
   * Use a block cache in _find_content_rename_candidates(),
     improving performance. (Mike Williams)
 
+  * Add support for ``core.protectNTFS`` setting.
+    (Jelmer Vernooij)
+
+ IMPROVEMENTS
+
+  * New public method `Repo.reset_index`. (Jelmer Vernooij)
+
 0.9.8	2014-11-30
 
  BUG FIXES

+ 3 - 6
dulwich/porcelain.py

@@ -204,8 +204,7 @@ def clone(source, target=None, bare=False, checkout=None, outstream=sys.stdout):
     r["HEAD"] = remote_refs["HEAD"]
     if checkout:
         outstream.write('Checking out HEAD')
-        index.build_index_from_tree(r.path, r.index_path(),
-                                    r.object_store, r["HEAD"].tree)
+        r.reset_index()
 
     return r
 
@@ -476,9 +475,8 @@ def reset(repo, mode, committish="HEAD"):
 
     r = open_repo(repo)
 
-    indexfile = r.index_path()
     tree = r[committish].tree
-    index.build_index_from_tree(r.path, indexfile, r.object_store, tree)
+    r.reset_index()
 
 
 def push(repo, remote_location, refs_path,
@@ -532,9 +530,8 @@ def pull(repo, remote_location, refs_path,
     r['HEAD'] = remote_refs[refs_path]
 
     # Perform 'git checkout .' - syncs staged changes
-    indexfile = r.index_path()
     tree = r["HEAD"].tree
-    index.build_index_from_tree(r.path, indexfile, r.object_store, tree)
+    r.reset_index()
 
 
 def status(repo="."):

+ 19 - 5
dulwich/repo.py

@@ -793,17 +793,31 @@ class Repo(BaseRepo):
 
             if not bare:
                 # Checkout HEAD to target dir
-                target._build_tree()
+                target.reset_index()
 
         return target
 
-    def _build_tree(self):
-        from dulwich.index import build_index_from_tree
+    def reset_index(self, tree=None):
+        """Reset the index back to a specific tree.
+
+        :param tree: Tree SHA to reset to, None for current HEAD tree.
+        """
+        from dulwich.index import (
+            build_index_from_tree,
+            validate_path_element_default,
+            validate_path_element_ntfs,
+            )
+        if tree is None:
+            tree = self['HEAD'].tree
         config = self.get_config()
         honor_filemode = config.get_boolean('core', 'filemode', os.name != "nt")
+        if config.get_boolean('core', 'core.protectNTFS', os.name == "nt"):
+            validate_path_element = validate_path_element_ntfs
+        else:
+            validate_path_element = validate_path_element_default
         return build_index_from_tree(self.path, self.index_path(),
-                self.object_store, self['HEAD'].tree,
-                honor_filemode=honor_filemode)
+                self.object_store, tree, honor_filemode=honor_filemode,
+                validate_path_element=validate_path_element)
 
     def get_config(self):
         """Retrieve the config object.