You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Darrin Thompson <da...@progeny.com> on 2002/08/23 14:46:34 UTC

File/revision obliteration feature

Suppose that I as a subversion user accidentally checked into a "public" 
subversion repo some piece of private info. I would need to get that 
information back out. Is it possible to do this using the latest 
subversion release? If it is possible, I'd love to hear the nitty details.

Darrin



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: File/revision obliteration feature

Posted by Karl Fogel <kf...@newton.ch.collab.net>.
Michael Price <mp...@atl.lmco.com> writes:
> Assuming someone was crazy enough to want to try and add such a feature,
> what problems would he encounter along the way? If this has already been
> outlined in a previous thread then a pointer to that discussion would be
> most appreciated.

You want

   http://subversion.tigris.org/issues/show_bug.cgi?id=516

which is the issue entitled "svn obliterate" :-)

-K



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: File/revision obliteration feature

Posted by cm...@collab.net.
Michael Price <mp...@atl.lmco.com> writes:

> cmpilato@collab.net writes:
>  > If the file is originally at /trunk/notes/private.txt, and you do a
>  > few branches and tags, a clean obliteration means hunting down not
>  > just all version of private.txt, but all versions of all branches of
>  > private.txt, *and* all nodes in all revisions that point to
>  > private.txt as a child entry.  Because filesystem nodes don't keep
>  > pointers to their (potentially multiple) parent nodes, finding those
>  > parent nodes could cost you dearly.  To quite gstein: "Cheers!"
> 
> Yeh, that is a messy problem.
> 
> So assuming you discover the "accident" quickly (i.e. it occurred a few
> revisions ago) then your best bet to solving the problem is to:
> 
>   1. make a dump of everything up to the revision before the "accident"
>   2. make a few diffs and notes for the remaining revisions
>   3. load the dump into a new repository
>   4. recommit the appropriate bits/copies/merges/etc
> 
> Messy but faster than writing an obliteration command.

It would certainly be my plan of attack in the absence of such a
command, yes.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: File/revision obliteration feature

Posted by Michael Price <mp...@atl.lmco.com>.
cmpilato@collab.net writes:
 > If the file is originally at /trunk/notes/private.txt, and you do a
 > few branches and tags, a clean obliteration means hunting down not
 > just all version of private.txt, but all versions of all branches of
 > private.txt, *and* all nodes in all revisions that point to
 > private.txt as a child entry.  Because filesystem nodes don't keep
 > pointers to their (potentially multiple) parent nodes, finding those
 > parent nodes could cost you dearly.  To quite gstein: "Cheers!"

Yeh, that is a messy problem.

So assuming you discover the "accident" quickly (i.e. it occurred a few
revisions ago) then your best bet to solving the problem is to:

  1. make a dump of everything up to the revision before the "accident"
  2. make a few diffs and notes for the remaining revisions
  3. load the dump into a new repository
  4. recommit the appropriate bits/copies/merges/etc

Messy but faster than writing an obliteration command.

Michael


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: File/revision obliteration feature

Posted by cm...@collab.net.
Michael Price <mp...@atl.lmco.com> writes:

> Garrett Rooney writes:
>  > On Fri, Aug 23, 2002 at 09:46:34AM -0500, Darrin Thompson wrote:
>  > > Suppose that I as a subversion user accidentally checked into a "public" 
>  > > subversion repo some piece of private info. I would need to get that 
>  > > information back out. Is it possible to do this using the latest 
>  > > subversion release? If it is possible, I'd love to hear the nitty details.
>  > 
>  > that would be the hypothetical 'svn obliterate' feature, which does
>  > not currently exist.  it's a post-1.0 feature that people have
>  > requested, but it's a fairly large amount of work to add.  until then,
>  > it's one of those "doctor doctor, it hurts if i do this" "well, then
>  > don't do that" kind of things...
> 
> Assuming someone was crazy enough to want to try and add such a feature,
> what problems would he encounter along the way? If this has already been
> outlined in a previous thread then a pointer to that discussion would be
> most appreciated.

Your biggest problems are a) the fact that our filesystem is a DAG
with lazy branching, and b) what to do about working copies that have
already checked out your private thing.

If the file is originally at /trunk/notes/private.txt, and you do a
few branches and tags, a clean obliteration means hunting down not
just all version of private.txt, but all versions of all branches of
private.txt, *and* all nodes in all revisions that point to
private.txt as a child entry.  Because filesystem nodes don't keep
pointers to their (potentially multiple) parent nodes, finding those
parent nodes could cost you dearly.  To quite gstein: "Cheers!"

Secondly, if there are working copies out there with your private.txt,
then obviously, you have a bit of a problem with the privacy of that
file, period.  But aside from that, if you go dinging around in the
repository to remove that file, you just broke everybody's working
copies (at least those that had the file, and potentially those that
didn't, I'm guessing).  Of course, maybe this is a *good* thing,
ensuring that folks will have to check out again -- a new checkout
that won't have your private file.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

RE: Re: File/revision obliteration feature

Posted by Bill Tutt <ra...@lyra.org>.
> From: Michael Price [mailto:mprice@atl.lmco.com]
> 
> Garrett Rooney writes:
>  > On Fri, Aug 23, 2002 at 09:46:34AM -0500, Darrin Thompson wrote:
>  > > Suppose that I as a subversion user accidentally checked into a
> "public"
>  > > subversion repo some piece of private info. I would need to get
that
>  > > information back out. Is it possible to do this using the latest
>  > > subversion release? If it is possible, I'd love to hear the nitty
> details.
>  >
>  > that would be the hypothetical 'svn obliterate' feature, which does
>  > not currently exist.  it's a post-1.0 feature that people have
>  > requested, but it's a fairly large amount of work to add.  until
then,
>  > it's one of those "doctor doctor, it hurts if i do this" "well,
then
>  > don't do that" kind of things...
> 
> Assuming someone was crazy enough to want to try and add such a
feature,
> what problems would he encounter along the way? If this has already
been
> outlined in a previous thread then a pointer to that discussion would
be
> most appreciated.
> 

No problems as such. It's just a bunch of tedious work. If memory serves
the existing BDB schema makes it more expensive than it might be with a
real SQL data store. (due to not having more indices of the data)

> I must be a little more human than the rest of the subversion users as
I
> make quite a few mistakes and have longed for such a feature on more
than
> one occasion.
> 

Being human is ok. However, obliterate is so expensive and resource
sucking on the repository that you only want to use it for very very
very important reasons, and not on a day to day basis.

Sample examples of valid uses of obliterate:
* Result of a court order
* Confidential information that needs to be completely removed
* Other very very bad things

Committing something you didn't want mean to commit isn't a decent
excuse for using obliterate. Obliterate is so expensive that it's like
to be an administrator only available option. (i.e. svnadmin)

Another additional reason for obliterate being handy is the when you
have lots of large binary rebuildable files that you want to remove
incremental versions of between given repository revision numbers in
order to save large amounts of disk space.

Hopefully, this isn't as necessary with Subversion's ability to do
binary deltas, but I do know that SourceDepot (MS's NT source code
control system that was described in some Usenix paper someplace) has
such a feature.

Bill


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: File/revision obliteration feature

Posted by Michael Price <mp...@atl.lmco.com>.
Garrett Rooney writes:
 > On Fri, Aug 23, 2002 at 09:46:34AM -0500, Darrin Thompson wrote:
 > > Suppose that I as a subversion user accidentally checked into a "public" 
 > > subversion repo some piece of private info. I would need to get that 
 > > information back out. Is it possible to do this using the latest 
 > > subversion release? If it is possible, I'd love to hear the nitty details.
 > 
 > that would be the hypothetical 'svn obliterate' feature, which does
 > not currently exist.  it's a post-1.0 feature that people have
 > requested, but it's a fairly large amount of work to add.  until then,
 > it's one of those "doctor doctor, it hurts if i do this" "well, then
 > don't do that" kind of things...

Assuming someone was crazy enough to want to try and add such a feature,
what problems would he encounter along the way? If this has already been
outlined in a previous thread then a pointer to that discussion would be
most appreciated.

I must be a little more human than the rest of the subversion users as I
make quite a few mistakes and have longed for such a feature on more than
one occasion.

Michael


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: File/revision obliteration feature

Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On Fri, Aug 23, 2002 at 09:46:34AM -0500, Darrin Thompson wrote:
> Suppose that I as a subversion user accidentally checked into a "public" 
> subversion repo some piece of private info. I would need to get that 
> information back out. Is it possible to do this using the latest 
> subversion release? If it is possible, I'd love to hear the nitty details.

that would be the hypothetical 'svn obliterate' feature, which does
not currently exist.  it's a post-1.0 feature that people have
requested, but it's a fairly large amount of work to add.  until then,
it's one of those "doctor doctor, it hurts if i do this" "well, then
don't do that" kind of things...

-garrett

-- 
garrett rooney                    Remember, any design flaw you're 
rooneg@electricjellyfish.net      sufficiently snide about becomes  
http://electricjellyfish.net/     a feature.       -- Dan Sugalski

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

RE: File/revision obliteration feature

Posted by Bill Tutt <ra...@lyra.org>.
Sadly, it's not possible in the latest release. It's technically
possible, but that particular feature has been deemed not necessary for
1.0.

Not to mention, actually executing an obliterate operation is very
expensive and time consuming.

Svnadmin dump/load offers a way of creating a textual representation of
a repository, and I suppose you could edit the dump to obliterate that
information if you really had to.

Bill


> -----Original Message-----
> From: Darrin Thompson [mailto:darrint@progeny.com]
> Sent: Friday, August 23, 2002 7:47 AM
> To: dev@subversion.tigris.org
> Subject: File/revision obliteration feature
> 
> Suppose that I as a subversion user accidentally checked into a
"public"
> subversion repo some piece of private info. I would need to get that
> information back out. Is it possible to do this using the latest
> subversion release? If it is possible, I'd love to hear the nitty
details.
> 
> Darrin
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
> For additional commands, e-mail: dev-help@subversion.tigris.org



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org