# HG changeset patch # User Matt Mackall # Date 1155699995 18000 # Node ID db397c38005df1fed01069d89814aa01e04aa667 # Parent dd032b0f02ac64a88544f6c71b94edfaed852f48 merge: use file size stored in revlog index Add size method to filelog to handle nodes with renames diff -r dd032b0f02ac -r db397c38005d mercurial/filelog.py --- a/mercurial/filelog.py Tue Aug 15 18:30:21 2006 -0500 +++ b/mercurial/filelog.py Tue Aug 15 22:46:35 2006 -0500 @@ -65,6 +65,16 @@ return (m["copy"], bin(m["copyrev"])) return False + def size(self, rev): + """return the size of a given revision""" + + # for revisions with renames, we have to go the slow way + node = self.node(rev) + if self.renamed(node): + return len(self.read(node)) + + return revlog.size(self, rev) + def cmp(self, node, text): """compare text with a given file revision""" diff -r dd032b0f02ac -r db397c38005d mercurial/merge.py --- a/mercurial/merge.py Tue Aug 15 18:30:21 2006 -0500 +++ b/mercurial/merge.py Tue Aug 15 22:46:35 2006 -0500 @@ -282,7 +282,8 @@ # of that file some time in the past. Thus our # merge will appear as a normal local file # modification. - f_len = len(repo.file(f).read(other)) + fl = repo.file(f) + f_len = fl.size(fl.rev(other)) repo.dirstate.update([f], 'n', st_size=f_len, st_mtime=-1) remove.sort()