[Pkg-bazaar-commits] ./bzr/unstable r203: revfile:
mbp at sourcefrog.net
mbp at sourcefrog.net
Fri Apr 10 07:44:02 UTC 2009
------------------------------------------------------------
revno: 203
committer: mbp at sourcefrog.net
timestamp: Sat 2005-04-09 13:50:18 +1000
message:
revfile:
- remove last_idx in favour of just __len__
- better command-line handling
modified:
bzrlib/revfile.py
-------------- next part --------------
=== modified file 'bzrlib/revfile.py'
--- a/bzrlib/revfile.py 2005-04-09 03:44:13 +0000
+++ b/bzrlib/revfile.py 2005-04-09 03:50:18 +0000
@@ -129,16 +129,6 @@
% (h, self.basename))
- def last_idx(self):
- """Return last index already present, or -1 if none."""
- l = os.fstat(self.idxfile.fileno())[stat.ST_SIZE]
- if l == 0:
- return -1
- if l % _RECORDSIZE:
- raise RevfileError("bad length %d on index of %r" % (l, self.basename))
- return (l / _RECORDSIZE) - 2
-
-
def revision(self, rev):
base = self.index[rev][0]
start = self.index[base][1]
@@ -166,7 +156,7 @@
This is not compressed against any reference version.
Returns the index for that text."""
- idx = self.last_idx() + 1
+ idx = len(self)
self.datafile.seek(0, 2) # to end
self.idxfile.seek(0, 2)
assert self.idxfile.tell() == _RECORDSIZE * (idx + 1)
@@ -208,7 +198,13 @@
def __len__(self):
- return int(self.last_idx()) + 1
+ """Return number of revisions."""
+ l = os.fstat(self.idxfile.fileno())[stat.ST_SIZE]
+ if l % _RECORDSIZE:
+ raise RevfileError("bad length %d on index of %r" % (l, self.basename))
+ if l < _RECORDSIZE:
+ raise RevfileError("no header present in index of %r" % (self.basename))
+ return int(l / _RECORDSIZE) - 1
def __getitem__(self, idx):
@@ -274,28 +270,38 @@
def main(argv):
r = Revfile("testrev")
- if len(argv) < 2:
+
+ try:
+ cmd = argv[1]
+ except IndexError:
sys.stderr.write("usage: revfile dump\n"
" revfile add\n"
" revfile get IDX\n")
- sys.exit(1)
+ return 1
- if argv[1] == 'add':
+
+ if cmd == 'add':
new_idx = r.add_full_text(sys.stdin.read())
print 'added idx %d' % new_idx
- elif argv[1] == 'dump':
+ elif cmd == 'dump':
r.dump()
- elif argv[1] == 'get':
+ elif cmd == 'get':
try:
- sys.stdout.write(r._get_full_text(int(argv[2])))
+ idx = int(argv[2])
except IndexError:
- sys.stderr.write("no such record\n")
- sys.exit(1)
+ sys.stderr.write("usage: revfile get IDX\n")
+ return 1
+
+ if idx < 0 or idx >= len(r):
+ sys.stderr.write("invalid index %r\n" % idx)
+ return 1
+
+ sys.stdout.write(r._get_full_text(idx))
else:
- sys.stderr.write("unknown command %r\n" % argv[1])
- sys.exit(1)
+ sys.stderr.write("unknown command %r\n" % cmd)
+ return 1
if __name__ == '__main__':
import sys
- main(sys.argv)
+ sys.exit(main(sys.argv) or 0)
More information about the Pkg-bazaar-commits
mailing list