Rev 5860: (jelmer) Add optional path argument to Tree.get_symlink_target(). (Jelmer in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Fri May 13 16:59:46 UTC 2011


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

------------------------------------------------------------
revno: 5860 [merge]
revision-id: pqm at pqm.ubuntu.com-20110513165944-rv579ds1kciopi4n
parent: pqm at pqm.ubuntu.com-20110513153747-aw3d2lsjyk40bp9q
parent: jelmer at samba.org-20110513140214-xwg5ot12tpim6t4o
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2011-05-13 16:59:44 +0000
message:
  (jelmer) Add optional path argument to Tree.get_symlink_target(). (Jelmer
   Vernooij)
modified:
  bzrlib/bundle/bundle_data.py   read_changeset.py-20050619171944-c0d95aa685537640
  bzrlib/revisiontree.py         revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
  bzrlib/tests/per_tree/test_get_symlink_target.py test_get_symlink_tar-20070225165554-ickod3w3t7u0zzqh-1
  bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
  bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
  bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
  bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
  doc/en/release-notes/bzr-2.4.txt bzr2.4.txt-20110114053217-k7ym9jfz243fddjm-1
=== modified file 'bzrlib/bundle/bundle_data.py'
--- a/bzrlib/bundle/bundle_data.py	2011-05-08 13:07:11 +0000
+++ b/bzrlib/bundle/bundle_data.py	2011-05-13 14:02:14 +0000
@@ -641,10 +641,11 @@
                 'Malformed patch for %s, %r' % (file_id, file_patch))
         return patched_file(file_patch, patch_original)
 
-    def get_symlink_target(self, file_id):
-        new_path = self.id2path(file_id)
+    def get_symlink_target(self, file_id, path=None):
+        if path is None:
+            path = self.id2path(file_id)
         try:
-            return self._targets[new_path]
+            return self._targets[path]
         except KeyError:
             return self.base_tree.get_symlink_target(file_id)
 
@@ -715,7 +716,7 @@
                 ie.executable = self.is_executable(file_id)
             elif kind == 'symlink':
                 ie = InventoryLink(file_id, name, parent_id)
-                ie.symlink_target = self.get_symlink_target(file_id)
+                ie.symlink_target = self.get_symlink_target(file_id, path)
             ie.revision = revision_id
 
             if kind == 'file':

=== modified file 'bzrlib/revisiontree.py'
--- a/bzrlib/revisiontree.py	2011-04-17 23:06:22 +0000
+++ b/bzrlib/revisiontree.py	2011-05-13 14:02:14 +0000
@@ -142,7 +142,7 @@
         for path, entry in entries:
             yield path, 'V', entry.kind, entry.file_id, entry
 
-    def get_symlink_target(self, file_id):
+    def get_symlink_target(self, file_id, path=None):
         ie = self._inventory[file_id]
         # Inventories store symlink targets in unicode
         return ie.symlink_target

=== modified file 'bzrlib/tests/per_tree/test_get_symlink_target.py'
--- a/bzrlib/tests/per_tree/test_get_symlink_target.py	2009-07-10 07:14:02 +0000
+++ b/bzrlib/tests/per_tree/test_get_symlink_target.py	2011-05-13 14:02:14 +0000
@@ -19,7 +19,6 @@
 import os
 
 from bzrlib import (
-    errors,
     osutils,
     tests,
     )
@@ -46,6 +45,7 @@
         self.assertEqual('foo', tree.get_symlink_target('link-id'))
         self.assertEqual('../bar', tree.get_symlink_target('rel-link-id'))
         self.assertEqual('/baz/bing', tree.get_symlink_target('abs-link-id'))
+        self.assertEqual('foo', tree.get_symlink_target('link-id', 'link'))
 
     def test_get_unicode_symlink_target(self):
         self.requireFeature(tests.SymlinkFeature)

=== modified file 'bzrlib/transform.py'
--- a/bzrlib/transform.py	2011-05-10 09:34:35 +0000
+++ b/bzrlib/transform.py	2011-05-13 14:02:14 +0000
@@ -2340,7 +2340,7 @@
                                    self.get_file(file_id).readlines(),
                                    default_revision)
 
-    def get_symlink_target(self, file_id):
+    def get_symlink_target(self, file_id, path=None):
         """See Tree.get_symlink_target"""
         if not self._content_change(file_id):
             return self._transform._tree.get_symlink_target(file_id)

=== modified file 'bzrlib/tree.py'
--- a/bzrlib/tree.py	2011-05-09 10:20:17 +0000
+++ b/bzrlib/tree.py	2011-05-13 14:02:14 +0000
@@ -359,17 +359,19 @@
             cur_file = (self.get_file_text(file_id),)
             yield identifier, cur_file
 
-    def get_symlink_target(self, file_id):
+    def get_symlink_target(self, file_id, path=None):
         """Get the target for a given file_id.
 
         It is assumed that the caller already knows that file_id is referencing
         a symlink.
         :param file_id: Handle for the symlink entry.
+        :param path: The path of the file.
+        If both file_id and path are supplied, an implementation may use
+        either one.
         :return: The path the symlink points to.
         """
         raise NotImplementedError(self.get_symlink_target)
 
-
     def get_root_id(self):
         """Return the file_id for the root of this tree."""
         raise NotImplementedError(self.get_root_id)

=== modified file 'bzrlib/workingtree.py'
--- a/bzrlib/workingtree.py	2011-05-11 15:31:44 +0000
+++ b/bzrlib/workingtree.py	2011-05-13 16:59:44 +0000
@@ -863,8 +863,11 @@
         self.add(path, file_id, 'directory')
         return file_id
 
-    def get_symlink_target(self, file_id):
-        abspath = self.id2abspath(file_id)
+    def get_symlink_target(self, file_id, path=None):
+        if path is not None:
+            abspath = self.abspath(path)
+        else:
+            abspath = self.id2abspath(file_id)
         target = osutils.readlink(abspath)
         return target
 

=== modified file 'bzrlib/workingtree_4.py'
--- a/bzrlib/workingtree_4.py	2011-05-10 09:30:33 +0000
+++ b/bzrlib/workingtree_4.py	2011-05-13 14:02:14 +0000
@@ -1889,7 +1889,7 @@
                                        identifier))
         return self._repository.iter_files_bytes(repo_desired_files)
 
-    def get_symlink_target(self, file_id):
+    def get_symlink_target(self, file_id, path=None):
         entry = self._get_entry(file_id=file_id)
         parent_index = self._get_parent_index()
         if entry[1][parent_index][0] != 'l':

=== modified file 'doc/en/release-notes/bzr-2.4.txt'
--- a/doc/en/release-notes/bzr-2.4.txt	2011-05-11 16:35:34 +0000
+++ b/doc/en/release-notes/bzr-2.4.txt	2011-05-13 14:02:14 +0000
@@ -96,6 +96,9 @@
 * ``Tree.__iter__`` has been deprecated; use ``Tree.all_file_ids``
   instead.  (Jelmer Vernooij)
 
+* ``Tree.get_symlink_target`` now takes an optional ``path``
+  argument. (Jelmer Vernooij)
+
 Internals
 *********
 




More information about the bazaar-commits mailing list