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