From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Jakub Narebski <jnareb@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] Add git-filter-branch
Date: Mon, 4 Jun 2007 00:07:52 +0100 (BST) [thread overview]
Message-ID: <Pine.LNX.4.64.0706040006470.4046@racer.site> (raw)
In-Reply-To: <200706031228.58779.jnareb@gmail.com>
Hi,
On Sun, 3 Jun 2007, Jakub Narebski wrote:
> On Sun, 3 Jun 2007, Johannes Schindelin wrote:
> > On Sun, 3 Jun 2007, Jakub Narebski wrote:
> >> Johannes Schindelin wrote:
> >>
> >>> This script is derived from Pasky's cg-admin-rewritehist.
> >>>
> >>> In fact, it _is_ the same script, minimally adapted to work without cogito.
> >>> It _should_ be able to perform the same tasks, even if only relying on
> >>> core-git programs.
> >>>
> >>> All the work is Pasky's, just the adaption is mine.
> >>
> >> I was thinking about rewriting cg-adin-rewritehist as git-rewritehist
> >> using Perl (IIRC it needs bash, not only POSIX shell), and make it
> >> use git-fast-import.
>
> By the way, why did you change name to git-filter-branch, instead of
> leaving it [almost] as is, i.e. git-rewritehist. Or if you wanted to
> emphasize that it rewrites only one branch at a time, git-rewrite-branch?
It does not rewrite the branch. It writes a filtered _copy_. That is what
I wanted to make clear by that renaming.
> Note that history (branch) gets rewritten also in absence of filters, if
> there are any grafts in place. But I might be mistaken.
Actually, if you check the first non-setup test in the provide test
script, no. It is not _really_ rewritten. As the commit names stay exactly
the same.
> > First, it does not need Perl.
> >
> > Second, it does not even need bash.
>
> If I remember correctly (but I can be wrong here) Pasky said that he had
> to use arrays in cg-admin-rewritehist. Because introducing dependency on
> bash would be bad, that was the cause of thought to rewrite it in Perl
> (which we depend on anyway).
I rewrote the only instance where arrays were used:
> > At least that is what I tried to make sure. I replaced the only
> > instance of a bashim I was aware, namely the arrayism of $unchanged.
> > It can be a string just as well, as we are only storing object names
> > in it.
>
> I'm sorry, I haven't reviewed your patch carefully enough, it seems
> like. If you can translate cg-admin-rewritehist to POSIX shell, more
> power to you.
Actually, that is my understanding.
> Few notes of lesser importance (meaning they can go into subsequent
> commits).
>
> 1. Documentation: Cogito had documentation together with the command
> described, similarly to Perl POD, or LaTeX doc package + DocStrip,
> etc. It has IIRC rules in Makefile to extract documentation.
>
> In git we have documentation in separate files. The commands
> themselves have only usage, and sometimes long usage embedded.
> It would be nice of git-filter-branch / git-rewrite-branch also
> followed this convention.
Yes, I did not plan to provide documentation with the first patch, since I
wanted to encourage _review_ of the patch. Obviously, I failed ;-)
> 2. Using fast-import.
>
> >> +# Note that since this operation is extensively I/O expensive, it might
> >> +# be a good idea to do it off-disk, e.g. on tmpfs. Reportedly the speedup
> >> +# is very noticeable.
>
> Would it be possible to use git-fast-import to reduce I/O in this
> command? Cogito didn't use it because it is quite new, but there
> is no reason to not to use it now, I think.
It is overkill, usually.
The only thing that could benefit from it, would be complicated tree
filters.
But _the_ main usage for this script (in my expectation, at least) will be
to split projects into subprojects.
For this, we _still_ don't need fast-import, but maybe a better
tree-filter (something like --subdir-filter, which only checks out the
subdir (in the root), and also only takes those revisions into account
that actually touch that subdir).
Ciao,
Dscho
next prev parent reply other threads:[~2007-06-03 23:10 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-03 0:31 [PATCH] Add git-filter-branch Johannes Schindelin
2007-06-03 0:46 ` Jakub Narebski
2007-06-03 0:50 ` Johannes Schindelin
2007-06-03 10:28 ` Jakub Narebski
2007-06-03 18:36 ` Steven Grimm
2007-06-03 23:07 ` Johannes Schindelin [this message]
2007-06-05 10:18 ` Jonas Fonseca
2007-06-05 10:26 ` David Kastrup
2007-06-05 10:30 ` Junio C Hamano
2007-06-05 10:34 ` Jonas Fonseca
2007-06-05 13:55 ` Johannes Schindelin
2007-06-06 15:24 ` [PATCH] filter-branch: use $(($i+1)) instead of $((i+1)) Johannes Schindelin
2007-06-04 7:18 ` [PATCH] Add git-filter-branch Johannes Sixt
2007-06-04 7:59 ` Johannes Sixt
2007-06-04 16:11 ` Johannes Schindelin
2007-06-04 16:34 ` Johannes Sixt
2007-06-04 17:55 ` Johannes Schindelin
2007-06-05 7:01 ` Johannes Sixt
2007-06-05 15:58 ` Johannes Schindelin
2007-06-06 7:43 ` Johannes Sixt
2007-06-06 8:17 ` Junio C Hamano
2007-06-06 15:00 ` Johannes Schindelin
2007-06-06 15:22 ` Johannes Sixt
2007-06-06 17:59 ` Johannes Schindelin
2007-06-06 15:36 ` [PATCH] filter-branch: also don't fail in map() if a commit cannot be mapped Johannes Sixt
2007-06-06 17:50 ` Johannes Schindelin
2007-06-06 18:38 ` [PATCH v2] " Johannes Sixt
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=Pine.LNX.4.64.0706040006470.4046@racer.site \
--to=johannes.schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=jnareb@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).