[Pkg-bazaar-commits] ./bzr/unstable r206: new Revfile.add() dwim
mbp at sourcefrog.net
mbp at sourcefrog.net
Fri Apr 10 07:51:26 UTC 2009
------------------------------------------------------------
revno: 206
committer: mbp at sourcefrog.net
timestamp: Sat 2005-04-09 14:58:33 +1000
message:
new Revfile.add() dwim
modified:
bzrlib/revfile.py
-------------- next part --------------
=== modified file 'bzrlib/revfile.py'
--- a/bzrlib/revfile.py 2005-04-09 04:38:18 +0000
+++ b/bzrlib/revfile.py 2005-04-09 04:58:33 +0000
@@ -107,6 +107,8 @@
idxname = basename + '.irev'
dataname = basename + '.drev'
+ self.idxpos = 0L
+
idx_exists = os.path.exists(idxname)
data_exists = os.path.exists(dataname)
@@ -130,6 +132,9 @@
% (h, self.basename))
+
+
+
def revision(self, rev):
base = self.index[rev][0]
start = self.index[base][1]
@@ -192,29 +197,36 @@
- def _add_full_text(self, text):
+ def _add_full_text(self, text, text_sha):
"""Add a full text to the file.
This is not compressed against any reference version.
Returns the index for that text."""
- return self._add_common(sha.new(text).digest(), text, 0, _NO_RECORD)
-
-
- def _add_delta(self, text, base):
+ return self._add_common(text_sha, text, 0, _NO_RECORD)
+
+
+ def _add_delta(self, text, text_sha, base):
"""Add a text stored relative to a previous text."""
self._check_index(base)
- text_sha = sha.new(text).digest()
base_text = self.get(base)
data = mdiff.bdiff(base_text, text)
return self._add_common(text_sha, data, 0, base)
- def add(self, text, base=None):
- # TODO: check it's not already present?
- assert 0
+ def add(self, text, base=_NO_RECORD):
+ text_sha = sha.new(text).digest()
+ idx = self.find_sha(text_sha)
+ if idx != _NO_RECORD:
+ return idx # already present
+ if base == _NO_RECORD:
+ return self._add_full_text(text, text_sha)
+ else:
+ return self._add_delta(self, text, text_sha, base)
+
+
def addrevision(self, text, changeset):
t = self.tip()
n = t + 1
@@ -238,6 +250,7 @@
open(self.datafile(), "a").write(data)
+
def get(self, idx):
idxrec = self[idx]
base = idxrec[I_BASE]
@@ -360,7 +373,7 @@
if cmd == 'add':
- new_idx = r._add_full_text(sys.stdin.read())
+ new_idx = r.add(sys.stdin.read())
print 'added idx %d' % new_idx
elif cmd == 'add-delta':
new_idx = r._add_delta(sys.stdin.read(), int(argv[2]))
More information about the Pkg-bazaar-commits
mailing list