git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* git-filter-branch
@ 2007-08-09  6:34 Mike Hommey
  2007-08-09  8:58 ` git-filter-branch Johannes Schindelin
  0 siblings, 1 reply; 6+ messages in thread
From: Mike Hommey @ 2007-08-09  6:34 UTC (permalink / raw)
  To: Git Mailing List

Hi,

What is supposed to be the usage() of git-fetch-branch ?

git-filter-branch itself says:
git-filter-branch [-d TEMPDIR] [FILTERS] DESTBRANCH [REV-RANGE]

while the documentation doesn't explicitely talk about DESTBRANCH,
expect in the form of an hypothetical /newbranch/, that you obviously
don't give to the command line.

And whereas git-filter-branch itself says there is such an argument,
it actually doesn't take it, and doesn't seem to be hardwired to create
a new branch instead of overwriting the current one.

So what is git-filter-branch supposed to be doing ?

As a side note, if it ever happens that git-filter-branch can create a
new branch, it might be nice to have each commit on the branch to have
the original commit as parent, as well as its branch parent, so that
they are seen as merges.

Cheers,

Mike

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: git-filter-branch
  2007-08-09  6:34 git-filter-branch Mike Hommey
@ 2007-08-09  8:58 ` Johannes Schindelin
  2007-08-09  9:15   ` git-filter-branch Mike Hommey
  0 siblings, 1 reply; 6+ messages in thread
From: Johannes Schindelin @ 2007-08-09  8:58 UTC (permalink / raw)
  To: Mike Hommey; +Cc: Git Mailing List

Hi,

On Thu, 9 Aug 2007, Mike Hommey wrote:

> What is supposed to be the usage() of git-fetch-branch ?
> 
> git-filter-branch itself says:
> git-filter-branch [-d TEMPDIR] [FILTERS] DESTBRANCH [REV-RANGE]

This is an unfortunate left-over.  The syntax described in the 
documentation should be right.

> while the documentation doesn't explicitely talk about DESTBRANCH,
> expect in the form of an hypothetical /newbranch/, that you obviously
> don't give to the command line.

Hmm.  I don't have time to look into this now, but the syntax is this:

	git filter-branch [<options>] [--] [<rev-options>]

Those refs that you give in the <rev-options> are rewritten.  AFAIR the 
old values of the refs (if different) are written to refs/original/*.

> And whereas git-filter-branch itself says there is such an argument,
> it actually doesn't take it, and doesn't seem to be hardwired to create
> a new branch instead of overwriting the current one.
> 
> So what is git-filter-branch supposed to be doing ?

To rewrite refs.

> As a side note, if it ever happens that git-filter-branch can create a
> new branch, it might be nice to have each commit on the branch to have
> the original commit as parent, as well as its branch parent, so that
> they are seen as merges.

No, this will not happen.  Filter-branch is meant to clean up branches, so 
it will rewrite the commits.  However, you might be able to hack something 
in a parent filter.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: git-filter-branch
  2007-08-09  8:58 ` git-filter-branch Johannes Schindelin
@ 2007-08-09  9:15   ` Mike Hommey
  2007-08-09  9:19     ` git-filter-branch Johannes Schindelin
  0 siblings, 1 reply; 6+ messages in thread
From: Mike Hommey @ 2007-08-09  9:15 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Git Mailing List

On Thu, Aug 09, 2007 at 09:58:27AM +0100, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> Hi,
> 
> On Thu, 9 Aug 2007, Mike Hommey wrote:
> 
> > What is supposed to be the usage() of git-fetch-branch ?
> > 
> > git-filter-branch itself says:
> > git-filter-branch [-d TEMPDIR] [FILTERS] DESTBRANCH [REV-RANGE]
> 
> This is an unfortunate left-over.  The syntax described in the 
> documentation should be right.
> 
> > while the documentation doesn't explicitely talk about DESTBRANCH,
> > expect in the form of an hypothetical /newbranch/, that you obviously
> > don't give to the command line.
> 
> Hmm.  I don't have time to look into this now, but the syntax is this:
> 
> 	git filter-branch [<options>] [--] [<rev-options>]
> 
> Those refs that you give in the <rev-options> are rewritten.  AFAIR the 
> old values of the refs (if different) are written to refs/original/*.

In the description in the manpage:
   Lets you rewrite git revision history by creating a new branch from
   your current branch, applying custom filters on each revision.
   (...)
   The command takes the new branch name as a mandatory argument and the
   filters as optional arguments

And in example:
   Now, you will get the rewritten history saved in the branch newbranch
   (your current branch is left untouched).

I must say this is a feature that would actually be nice to have...

> > And whereas git-filter-branch itself says there is such an argument,
> > it actually doesn't take it, and doesn't seem to be hardwired to create
> > a new branch instead of overwriting the current one.
> > 
> > So what is git-filter-branch supposed to be doing ?
> 
> To rewrite refs.
> 
> > As a side note, if it ever happens that git-filter-branch can create a
> > new branch, it might be nice to have each commit on the branch to have
> > the original commit as parent, as well as its branch parent, so that
> > they are seen as merges.
> 
> No, this will not happen.  Filter-branch is meant to clean up branches, so 
> it will rewrite the commits.  However, you might be able to hack something 
> in a parent filter.

That would need the commit id for the original commit being treated at the
time, which I don't think is available in parent filters...

Mike

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: git-filter-branch
  2007-08-09  9:15   ` git-filter-branch Mike Hommey
@ 2007-08-09  9:19     ` Johannes Schindelin
  2007-08-09  9:30       ` git-filter-branch Mike Hommey
  0 siblings, 1 reply; 6+ messages in thread
From: Johannes Schindelin @ 2007-08-09  9:19 UTC (permalink / raw)
  To: Mike Hommey; +Cc: Git Mailing List

Hi,

On Thu, 9 Aug 2007, Mike Hommey wrote:

> On Thu, Aug 09, 2007 at 09:58:27AM +0100, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> > Hi,
> > 
> > On Thu, 9 Aug 2007, Mike Hommey wrote:
> > 
> > > What is supposed to be the usage() of git-fetch-branch ?
> > > 
> > > git-filter-branch itself says:
> > > git-filter-branch [-d TEMPDIR] [FILTERS] DESTBRANCH [REV-RANGE]
> > 
> > This is an unfortunate left-over.  The syntax described in the 
> > documentation should be right.
> > 
> > > while the documentation doesn't explicitely talk about DESTBRANCH,
> > > expect in the form of an hypothetical /newbranch/, that you obviously
> > > don't give to the command line.
> > 
> > Hmm.  I don't have time to look into this now, but the syntax is this:
> > 
> > 	git filter-branch [<options>] [--] [<rev-options>]
> > 
> > Those refs that you give in the <rev-options> are rewritten.  AFAIR the 
> > old values of the refs (if different) are written to refs/original/*.
> 
> In the description in the manpage:
>    Lets you rewrite git revision history by creating a new branch from
>    your current branch, applying custom filters on each revision.
>    (...)
>    The command takes the new branch name as a mandatory argument and the
>    filters as optional arguments
> 
> And in example:
>    Now, you will get the rewritten history saved in the branch newbranch
>    (your current branch is left untouched).
> 
> I must say this is a feature that would actually be nice to have...

To compare with the old one?  Use reflogs:

	git filter-branch --some-option master
	git diff master@{1}..master

> > > And whereas git-filter-branch itself says there is such an argument,
> > > it actually doesn't take it, and doesn't seem to be hardwired to create
> > > a new branch instead of overwriting the current one.
> > > 
> > > So what is git-filter-branch supposed to be doing ?
> > 
> > To rewrite refs.
> > 
> > > As a side note, if it ever happens that git-filter-branch can create a
> > > new branch, it might be nice to have each commit on the branch to have
> > > the original commit as parent, as well as its branch parent, so that
> > > they are seen as merges.
> > 
> > No, this will not happen.  Filter-branch is meant to clean up branches, so 
> > it will rewrite the commits.  However, you might be able to hack something 
> > in a parent filter.
> 
> That would need the commit id for the original commit being treated at the
> time, which I don't think is available in parent filters...

IIRC the "map" function will handle that.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: git-filter-branch
  2007-08-09  9:19     ` git-filter-branch Johannes Schindelin
@ 2007-08-09  9:30       ` Mike Hommey
  2007-08-09  9:38         ` git-filter-branch Johannes Schindelin
  0 siblings, 1 reply; 6+ messages in thread
From: Mike Hommey @ 2007-08-09  9:30 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Git Mailing List

On Thu, Aug 09, 2007 at 10:19:20AM +0100, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> > In the description in the manpage:
> >    Lets you rewrite git revision history by creating a new branch from
> >    your current branch, applying custom filters on each revision.
> >    (...)
> >    The command takes the new branch name as a mandatory argument and the
> >    filters as optional arguments
> > 
> > And in example:
> >    Now, you will get the rewritten history saved in the branch newbranch
> >    (your current branch is left untouched).
> > 
> > I must say this is a feature that would actually be nice to have...
> 
> To compare with the old one?  Use reflogs:
> 
> 	git filter-branch --some-option master
> 	git diff master@{1}..master

To have, for example, a branch tracking an upstream (svn or whatever)
repository and have a branch based on it, only differing in the fact that
some directories get removed.

To be more specific, I'm tracking webkit's svn repository, and want to
have a branch which would be a base for making source tarballs for
debian, excluding a lot of cruft (such as LayoutTests which are *huge*,
or the website that also lives in the same svn trunk).

As files are added frequently in these directories, rebase or merge would
not be enough, and I'd like to be able to do this with a bare repository,
which rebase and merge don't allow me to...

So if you have a better idea than git-filter-branch for that, I'm open to
suggestions ;)

Cheers,

Mike

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: git-filter-branch
  2007-08-09  9:30       ` git-filter-branch Mike Hommey
@ 2007-08-09  9:38         ` Johannes Schindelin
  0 siblings, 0 replies; 6+ messages in thread
From: Johannes Schindelin @ 2007-08-09  9:38 UTC (permalink / raw)
  To: Mike Hommey; +Cc: Git Mailing List

Hi,

On Thu, 9 Aug 2007, Mike Hommey wrote:

> On Thu, Aug 09, 2007 at 10:19:20AM +0100, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> > > In the description in the manpage:
> > >    Lets you rewrite git revision history by creating a new branch from
> > >    your current branch, applying custom filters on each revision.
> > >    (...)
> > >    The command takes the new branch name as a mandatory argument and the
> > >    filters as optional arguments
> > > 
> > > And in example:
> > >    Now, you will get the rewritten history saved in the branch newbranch
> > >    (your current branch is left untouched).
> > > 
> > > I must say this is a feature that would actually be nice to have...
> > 
> > To compare with the old one?  Use reflogs:
> > 
> > 	git filter-branch --some-option master
> > 	git diff master@{1}..master
> 
> To have, for example, a branch tracking an upstream (svn or whatever)
> repository and have a branch based on it, only differing in the fact that
> some directories get removed.

You can always achieve the same effect by

	$ git branch new-branch master
	$ git filter-branch <options> master

Anyway, I'm off for a few days.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-08-09  9:38 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-09  6:34 git-filter-branch Mike Hommey
2007-08-09  8:58 ` git-filter-branch Johannes Schindelin
2007-08-09  9:15   ` git-filter-branch Mike Hommey
2007-08-09  9:19     ` git-filter-branch Johannes Schindelin
2007-08-09  9:30       ` git-filter-branch Mike Hommey
2007-08-09  9:38         ` git-filter-branch Johannes Schindelin

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).