git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dmitry Potapov <dpotapov@gmail.com>
To: Elijah Newren <newren@gmail.com>
Cc: Alex Riesen <raa.lkml@gmail.com>,
	Frank Lichtenheld <frank@lichtenheld.de>,
	git@vger.kernel.org
Subject: Re: Trying to use git-filter-branch to compress history by removing large, obsolete binary files
Date: Mon, 8 Oct 2007 05:06:48 +0400	[thread overview]
Message-ID: <20071008010648.GB29433@potapov> (raw)
In-Reply-To: <51419b2c0710071722k576c06d9i2f4dce730eae2059@mail.gmail.com>

On Sun, Oct 07, 2007 at 06:22:28PM -0600, Elijah Newren wrote:
> 
> git-filter-branch --tree-filter 'rm -f testme.txt' HEAD
> git reset --hard
> rm -rf .git/refs/original/
> vi .git/packed-refs
> # Use vi to remove the line referring to refs/original...
> git reflog expire --all --expire-unreachable=0
> git gc --prune
> 
> Seems like a wrapper is needed.  :-)

Actually, I would rather not, because you rarely need to remove anything
immediately, and 30 days delay is reasonable time to give you a chance
to recover that you removed accidentally. You can reduce it by setting
appropriate value for gc.reflogExpireUnreachable in your configuration.
The only thing you need to do is to remove .git/refs/original/heads/something
after you are sure that git-filter-branch did exactly what you wanted.

> 
> > Warning: all unreachable references will be removed!
> 
> What other scenarios could lead to unreachable references?

Any re-writing of history leads to that.

> I don't
> know how to determine whether this is safe or not (except that these
> were test repositories anyway, so I don't care what happens to them).

Git logs all your action, so even re-writing history would not be
so disastrous if you suddenly realized that you did something wrong.
The history is stored for 30 days by default. Usually, you do not
need to mess with Git internals like you did above. Your useless
files still will disappear after being unreachable for 30 days.

OTOH, if you want to have a clean repository immediately, I believe
'git clone' is a better option. After you made a local clone using
it, 'git gc' should remove old garbage.

Dmitry

  reply	other threads:[~2007-10-08  1:07 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-07 21:23 Trying to use git-filter-branch to compress history by removing large, obsolete binary files Elijah Newren
2007-10-07 21:38 ` Frank Lichtenheld
2007-10-07 22:00   ` Elijah Newren
2007-10-07 22:19     ` Alex Riesen
2007-10-07 22:24       ` Elijah Newren
2007-10-07 23:40         ` Alex Riesen
2007-10-08  0:09           ` Elijah Newren
2007-10-08  6:15             ` Alex Riesen
2007-10-08  9:23               ` Andreas Ericsson
2007-10-07 23:43         ` Dmitry Potapov
2007-10-08  0:22           ` Elijah Newren
2007-10-08  1:06             ` Dmitry Potapov [this message]
2007-10-08  9:27               ` Andreas Ericsson
2007-10-08 10:05                 ` Karl Hasselström
2007-10-08 12:40                 ` Dmitry Potapov
2007-10-08 13:01                   ` Karl Hasselström
2007-10-07 23:19     ` Johannes Schindelin
2007-10-07 23:24       ` Elijah Newren
2007-10-07 23:28         ` Johannes Schindelin
2007-10-07 23:38           ` Elijah Newren
2007-10-08  0:34             ` Johannes Schindelin
2007-10-08  0:47               ` Elijah Newren
2007-10-08  2:28                 ` Sam Vilain
2007-10-08  1:00               ` J. Bruce Fields
2007-10-08  1:06                 ` Johannes Schindelin
2007-10-08  6:22                   ` Johannes Sixt
2007-10-08 14:36                     ` J. Bruce Fields
2007-10-08 16:37                       ` Theodore Tso
2007-10-08 19:05                         ` J. Bruce Fields
2007-10-09 10:37                         ` Johannes Schindelin
2007-10-07 22:08 ` Alex Riesen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20071008010648.GB29433@potapov \
    --to=dpotapov@gmail.com \
    --cc=frank@lichtenheld.de \
    --cc=git@vger.kernel.org \
    --cc=newren@gmail.com \
    --cc=raa.lkml@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).