← Back to team overview

dulwich-users team mailing list archive

[MERGE] Fix order of parameters to Tree.add.

 

This change makes the order of the arguments to Tree.add() consistent
with the rest of Dulwich - name, mode, hexsha. The old ordering is
still supported but using it will display a deprecation warning.

Cheers,

Jelmer
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: jelmer@xxxxxxxxx-20110313164009-h08p2t9v1g157232
# target_branch: file:///home/jelmer/src/dulwich/trunk/
# testament_sha1: 770c7613d4287d26542e001ffb4a95e3d96e973b
# timestamp: 2011-03-13 17:42:48 +0100
# base_revision_id: git-v1:8a2f5cefc0322bc1396c7d7d265e3af7dbf23378
# 
# Begin patch
=== modified file 'NEWS'
--- NEWS	2011-03-06 03:48:23 +0000
+++ NEWS	2011-03-13 16:40:09 +0000
@@ -16,6 +16,12 @@
 
   * Sphinxified documentation. (Lukasz Balcerzak)
 
+ API CHANGES
+
+  * The order of the parameters to Tree.add(name, mode, sha) has changed, and
+    is now consistent with the rest of Dulwich. Existing code will still
+    work but print a DeprecationWarning. (Jelmer Vernooij, #663550)
+
 0.7.0	2011-01-21
 
  FEATURES

=== modified file 'docs/tutorial/object-store.txt'
--- docs/tutorial/object-store.txt	2011-01-24 16:36:50 +0000
+++ docs/tutorial/object-store.txt	2011-03-13 16:40:09 +0000
@@ -27,7 +27,7 @@
 
   >>> from dulwich.objects import Tree
   >>> tree = Tree()
-  >>> tree.add(0100644, "spam", blob.id)
+  >>> tree.add("spam", 0100644, blob.id)
 
 Note that "0100644" is the octal form for a regular file with common
 permissions. You can hardcode them or you can use the ``stat`` module.

=== modified file 'dulwich/index.py'
--- dulwich/index.py	2010-05-24 17:21:02 +0000
+++ dulwich/index.py	2011-03-13 16:40:09 +0000
@@ -330,7 +330,7 @@
                 sha = build_tree(pathjoin(path, basename))
             else:
                 (mode, sha) = entry
-            tree.add(mode, basename, sha)
+            tree.add(basename, mode, sha)
         object_store.add_object(tree)
         return tree.id
     return build_tree("")

=== modified file 'dulwich/objects.py'
--- dulwich/objects.py	2011-03-06 03:48:23 +0000
+++ dulwich/objects.py	2011-03-13 16:40:09 +0000
@@ -27,6 +27,7 @@
 import os
 import posixpath
 import stat
+import warnings
 import zlib
 
 from dulwich.errors import (
@@ -819,14 +820,18 @@
         self._ensure_parsed()
         return iter(self._entries)
 
-    def add(self, mode, name, hexsha):
+    def add(self, name, mode, hexsha):
         """Add an entry to the tree.
 
-        :param mode: The mode of the entry as an integral type. Not all possible
-            modes are supported by git; see check() for details.
+        :param mode: The mode of the entry as an integral type. Not all 
+            possible modes are supported by git; see check() for details.
         :param name: The name of the entry, as a string.
         :param hexsha: The hex SHA of the entry as a string.
         """
+        if type(name) is int and type(mode) is str:
+            (name, mode) = (mode, name)
+            warnings.warn("Please use Tree.add(name, mode, hexsha)",
+                category=DeprecationWarning, stacklevel=2)
         self._ensure_parsed()
         self._entries[name] = mode, hexsha
         self._needs_serialization = True

=== modified file 'dulwich/tests/test_fastexport.py'
--- dulwich/tests/test_fastexport.py	2010-12-12 05:15:03 +0000
+++ dulwich/tests/test_fastexport.py	2011-03-13 16:40:09 +0000
@@ -61,7 +61,7 @@
         b = Blob()
         b.data = "FOO"
         t = Tree()
-        t.add(stat.S_IFREG | 0644, "foo", b.id)
+        t.add("foo", stat.S_IFREG | 0644, b.id)
         c = Commit()
         c.committer = c.author = "Jelmer <jelmer@host>"
         c.author_time = c.commit_time = 1271345553

=== modified file 'dulwich/tests/test_objects.py'
--- dulwich/tests/test_objects.py	2010-12-19 15:56:03 +0000
+++ dulwich/tests/test_objects.py	2011-03-13 16:40:09 +0000
@@ -26,6 +26,7 @@
 import datetime
 import os
 import stat
+import warnings
 
 from dulwich.errors import (
     ObjectFormatException,
@@ -404,6 +405,26 @@
 
 class TreeTests(ShaFileCheckTests):
 
+    def test_add(self):
+        myhexsha = "d80c186a03f423a81b39df39dc87fd269736ca86"
+        x = Tree()
+        x.add("myname", 0100755, myhexsha)
+        self.assertEquals(x["myname"], (0100755, myhexsha))
+        self.assertEquals('100755 myname\0' + hex_to_sha(myhexsha),
+                x.as_raw_string())
+
+    def test_add_old_order(self):
+        myhexsha = "d80c186a03f423a81b39df39dc87fd269736ca86"
+        x = Tree()
+        warnings.simplefilter("ignore", DeprecationWarning)
+        try:
+            x.add(0100755, "myname", myhexsha)
+        finally:
+            warnings.resetwarnings()
+        self.assertEquals(x["myname"], (0100755, myhexsha))
+        self.assertEquals('100755 myname\0' + hex_to_sha(myhexsha),
+                x.as_raw_string())
+
     def test_simple(self):
         myhexsha = "d80c186a03f423a81b39df39dc87fd269736ca86"
         x = Tree()

=== modified file 'dulwich/tests/test_patch.py'
--- dulwich/tests/test_patch.py	2010-12-18 16:48:28 +0000
+++ dulwich/tests/test_patch.py	2011-03-13 16:40:09 +0000
@@ -256,13 +256,13 @@
         changed2 = Blob.from_string("unchanged\nadded\n")
         unchanged = Blob.from_string("unchanged\n")
         tree1 = Tree()
-        tree1.add(0644, "removed.txt", removed.id)
-        tree1.add(0644, "changed.txt", changed1.id)
-        tree1.add(0644, "unchanged.txt", changed1.id)
+        tree1.add("removed.txt", 0644, removed.id)
+        tree1.add("changed.txt", 0644, changed1.id)
+        tree1.add("unchanged.txt", 0644, changed1.id)
         tree2 = Tree()
-        tree2.add(0644, "added.txt", added.id)
-        tree2.add(0644, "changed.txt", changed2.id)
-        tree2.add(0644, "unchanged.txt", changed1.id)
+        tree2.add("added.txt", 0644, added.id)
+        tree2.add("changed.txt", 0644, changed2.id)
+        tree2.add("unchanged.txt", 0644, changed1.id)
         store.add_objects([(o, None) for o in [
             tree1, tree2, added, removed, changed1, changed2, unchanged]])
         write_tree_diff(f, store, tree1.id, tree2.id)

# Begin bundle
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

Attachment: signature.asc
Description: Digital signature