obliterate functionality?

Theodore Tso tytso at MIT.EDU
Wed Mar 19 09:48:23 CDT 2008


On Wed, Mar 19, 2008 at 12:33:19AM +0000, Dirkjan Ochtman wrote:
> Martin Marques <martin <at> marquesminen.com.ar> writes:
> > Exacly which one of the cases mentioned? Why can't FreeBSD use a VCS 
> > that doesn't obliterate? BTW, what DO they use now a days?
> 
> They use CVS, obviously. I don't think any other open source VCS
> offers an obliterate feature (Subversion doesn't, and I think git
> and Bazaar-NG have the same stance as Mercurial considering this
> feature).

Git does have a way of doing this.  See the man page for
git-filter-branch for details:

http://www.kernel.org/pub/software/scm/git/docs/git-filter-branch.html

Note that this only obliterates the information on the local
repository.  Like Mercurial, bzr, and other distributed SCM, it's
physically impossible to force everyone to use the new filtered
branches.  So for example --- suppose someone accidentally checks in
some code that includes a key and algorithm which completely breaks
the DRM for Blue-Ray DVD's.  And in the meantime, before someone
notices, several hundred commits flow into the FreeBSD repository,
including some merges, etc., etc.

Now suppose the nice folks at the AACS consortium send you a
cease-and-desist order threatening to sue FreeBSD into the ground.
You can use a tool like git-filter-branch, or some manual process in
Mercurial, to rewrite all of the several hundred-odd commits starting
with the commit that included the check-in that had the AACS
algorithm.  (Since Mercurial doesn't have an automated way of
rewriting history like git does.  Or, in Mercurial, the simple thing
you can do is "turn back the clock" by wiping out all commits after
the AACS check in, and then asking people to rebase and redo their
commits.)

Once you have this new, rewritten repository, it will presumably obey
the cease-and-desist request from the AACS, and you will no longer be
distributed the verboten super-sekrit AACS algorithm as part of the
FreeBSD repository.  However, for everyone *else* who had cloned the
FreeBSD repository, that information will still be out there --- just
as everyone everyone who had done a CVS update of the CVS repository
if it contained the AACS will have made copies of the AACS algorithm,
and stash it on Wikileaks, web sites in Poland, Russia, Vietnam, etc.   

Does this help clarify the situation?

						- Ted


More information about the Mercurial mailing list