/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/transform.py

  • Committer: Robert Collins
  • Date: 2009-05-23 20:57:12 UTC
  • mfrom: (4371 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4441.
  • Revision ID: robertc@robertcollins.net-20090523205712-lcwbfqk6vwavinuv
MergeĀ .dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
import os
18
18
import errno
36
36
                           ReusingTransform, NotVersionedError, CantMoveRoot,
37
37
                           ExistingLimbo, ImmortalLimbo, NoFinalPath,
38
38
                           UnableCreateSymlink)
 
39
from bzrlib.filters import filtered_output_bytes, ContentFilterContext
39
40
from bzrlib.inventory import InventoryEntry
40
41
from bzrlib.osutils import (
41
42
    delete_any,
1909
1910
            return self._transform._tree.get_symlink_target(file_id)
1910
1911
        trans_id = self._transform.trans_id_file_id(file_id)
1911
1912
        name = self._transform._limbo_name(trans_id)
1912
 
        return os.readlink(name)
 
1913
        return osutils.readlink(name)
1913
1914
 
1914
1915
    def walkdirs(self, prefix=''):
1915
1916
        pending = [self._transform.root]
2113
2114
                    executable = tree.is_executable(file_id, tree_path)
2114
2115
                    if executable:
2115
2116
                        tt.set_executability(executable, trans_id)
2116
 
                    deferred_contents.append((file_id, trans_id))
 
2117
                    trans_data = (trans_id, tree_path)
 
2118
                    deferred_contents.append((file_id, trans_data))
2117
2119
                else:
2118
2120
                    file_trans_id[file_id] = new_by_entry(tt, entry, parent_id,
2119
2121
                                                          tree)
2150
2152
def _create_files(tt, tree, desired_files, pb, offset, accelerator_tree,
2151
2153
                  hardlink):
2152
2154
    total = len(desired_files) + offset
 
2155
    wt = tt._tree
2153
2156
    if accelerator_tree is None:
2154
2157
        new_desired_files = desired_files
2155
2158
    else:
2158
2161
                         in iter if not (c or e[0] != e[1]))
2159
2162
        new_desired_files = []
2160
2163
        count = 0
2161
 
        for file_id, trans_id in desired_files:
 
2164
        for file_id, (trans_id, tree_path) in desired_files:
2162
2165
            accelerator_path = unchanged.get(file_id)
2163
2166
            if accelerator_path is None:
2164
 
                new_desired_files.append((file_id, trans_id))
 
2167
                new_desired_files.append((file_id, (trans_id, tree_path)))
2165
2168
                continue
2166
2169
            pb.update('Adding file contents', count + offset, total)
2167
2170
            if hardlink:
2169
2172
                                   trans_id)
2170
2173
            else:
2171
2174
                contents = accelerator_tree.get_file(file_id, accelerator_path)
 
2175
                if wt.supports_content_filtering():
 
2176
                    filters = wt._content_filter_stack(tree_path)
 
2177
                    contents = filtered_output_bytes(contents, filters,
 
2178
                        ContentFilterContext(tree_path, tree))
2172
2179
                try:
2173
2180
                    tt.create_file(contents, trans_id)
2174
2181
                finally:
2175
 
                    contents.close()
 
2182
                    try:
 
2183
                        contents.close()
 
2184
                    except AttributeError:
 
2185
                        # after filtering, contents may no longer be file-like
 
2186
                        pass
2176
2187
            count += 1
2177
2188
        offset += count
2178
 
    for count, (trans_id, contents) in enumerate(tree.iter_files_bytes(
2179
 
                                                 new_desired_files)):
 
2189
    for count, ((trans_id, tree_path), contents) in enumerate(
 
2190
            tree.iter_files_bytes(new_desired_files)):
 
2191
        if wt.supports_content_filtering():
 
2192
            filters = wt._content_filter_stack(tree_path)
 
2193
            contents = filtered_output_bytes(contents, filters,
 
2194
                ContentFilterContext(tree_path, tree))
2180
2195
        tt.create_file(contents, trans_id)
2181
2196
        pb.update('Adding file contents', count + offset, total)
2182
2197