[MERGE] reject reserved revision ids
John Arbash Meinel
john at arbash-meinel.com
Thu Jan 11 17:47:48 GMT 2007
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Aaron Bentley wrote:
> Hi all,
>
> We seem to be agreed that revision ids ending with ':' should be
> reserved. There are currently two such ids:
>
> 'null:' (the null revision)
> 'current:' (the current on-disk state)
>
> This patch causes all reserved ids to be rejected by versionedfiles,
> repositories, branches and trees. Perhaps it doesn't cover every
> possible method, but it should cover enough that using a reserved id
> will lead to errors immediately.
>
> Unfortunately, the test cases mean that API compatibility is not
> preserved-- we are adding a new requirement (to throw ReservedId), and
> plugins that implement branch, repository or tree will fail the test
> suite until they are updated.
>
> I hope that this small incompatibility is permissible. The alternative
> is much more complex.
>
Having tests fail because an implementation is not 100% compliant with
the new definition is fine.
Having it fail at runtime because of that is what we are trying to avoid.
So if I understand your change, I think it is perfectly ok. This is
updating the API to handle a new edge case, not something that occurs
normally, and asking all implementations to also handle that edge case.
> Aaron
...
=== modified file bzrlib/revision.py
- --- bzrlib/revision.py
+++ bzrlib/revision.py
@@ -454,3 +454,6 @@
next = best_ancestor(next)
path.reverse()
return path
+
+def reserved_id(revision_id):
+ return revision_id.endswith(':')
^- This needs an extra space and a doc string.
And we probably should have a NEWS entry under INTERNALS.
So +1 conditional from me.
John
=:->
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFFpnhEJdeBCYSNAAMRAv5+AKDO2WSmAx/qJJ3Rtt/AXCy3Si45+wCfb7ry
0iqoxs+Xi37+V64ZdU/wxA4=
=ShdZ
-----END PGP SIGNATURE-----
More information about the bazaar
mailing list