All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: Jakub Narebski <jnareb@gmail.com>
Cc: Jeff King <peff@peff.net>, Shawn Pearce <spearce@spearce.org>,
	Ramkumar Ramachandra <artagnon@gmail.com>,
	Jens Lehmann <Jens.Lehmann@web.de>,
	Christian Couder <chriscool@tuxfamily.org>,
	Thomas Rast <trast@student.ethz.ch>, git <git@vger.kernel.org>,
	David Barr <david.barr@cordelta.com>,
	Elijah Newren <newren@gmail.com>
Subject: History surgery with fast-import (Re: Summer of Code project ideas due this Friday)
Date: Fri, 11 Mar 2011 18:20:17 -0600	[thread overview]
Message-ID: <20110312002017.GA16081@elie> (raw)
In-Reply-To: <m339mu7u6n.fsf@localhost.localdomain>

Jakub Narebski wrote:
> Jonathan Nieder <jrnieder@gmail.com> writes:

>> 4. filter-branch killer: using fast-import's new features to implement
>>    common filter-branch operations (--subdirectory-filter,
>>    --prune-empty, obliterating certain files) faster.
>
> How it would be different from existing reposurgeon tool by ESR
> (cross-VC thanks to using fast-import format), or git_fast_filter by
> Elijah Newren (more of a library than a ready tool)?

Good question.

. reposurgeon loads the whole history into a convenient format,
  manipulates it, then dumps it as a separate step.  So it is even more
  flexible than filter-branch, but with a large history and especially
  on a small machine it can be slower.

. git_fast_filter is what Thomas mentioned --- a filter to go between
  fast-export and fast-import.

Both involve unpacking all trees.  Which is not a huge expense, mind
you, but there is room to go faster.

What I was suggesting is instead a tool that relies on fast-import to
do the heavy lifting.  So, for example, when you ask to delete
path/to/remove.txt from all commits, it would write:

 commit refs/heads/master
 mark :172
 author A U Thor <author@example.com> ...
 committer ...
 data ...
 from ...
 merge ...
 M 040000 [old tree name for that commit] ""
 D path/to/remove.txt

 commit refs/heads/mater
 mark :173
 ...

The idea is inspired by
http://thread.gmane.org/gmane.comp.version-control.git/158375
I am interested in it because I imagine something like this could be
useful for splitting out branches from a naive import of an svn repo
(and similar surgeries).

  parent reply	other threads:[~2011-03-12  0:20 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-03 18:08 Google Summer of Code 2011 Shawn Pearce
2011-03-03 18:59 ` Jeff King
2011-03-03 19:04   ` Shawn Pearce
2011-03-03 20:33     ` Jeff King
2011-03-03 21:25       ` Jakub Narebski
2011-03-09 16:38         ` Jeff King
2011-03-09 16:39       ` Jeff King
2011-03-09 16:47         ` Shawn Pearce
2011-03-09 17:49       ` Jeff King
2011-03-09 17:52         ` Shawn Pearce
2011-03-09 21:58           ` Summer of Code project ideas due this Friday Jeff King
2011-03-10  0:10             ` Jonathan Nieder
2011-03-10 16:30               ` Jeff King
2011-03-10 17:31                 ` Shawn Pearce
2011-03-10 21:43                   ` Alexander Miseler
2011-03-10 17:15               ` Thomas Rast
2011-03-10 18:17                 ` Santi Béjar
2011-03-10 18:46                 ` Jeff King
2011-03-10 19:21                   ` Junio C Hamano
2011-03-10 19:28                     ` Jeff King
2011-03-10 20:54                       ` Junio C Hamano
2011-03-10 21:42                         ` Jeff King
2011-03-10 22:58                           ` Junio C Hamano
2011-03-10 23:09                             ` Jeff King
2011-03-11 13:31                   ` Thomas Rast
2011-03-10 17:39               ` Jakub Narebski
2011-03-11 13:28                 ` Thomas Rast
2011-03-12  0:20                 ` Jonathan Nieder [this message]
2011-03-13 17:08               ` Ramkumar Ramachandra
2011-03-10  0:19             ` Nguyen Thai Ngoc Duy
2011-03-10 16:31               ` Jeff King
2011-03-10 21:40             ` Alexander Miseler
2011-03-10 22:18               ` Jeff King
2011-03-11 14:17                 ` Alexander Miseler
2011-03-12 19:47                   ` Alexander Miseler
2011-03-11 12:18             ` Alexander Miseler
2011-03-11 12:52               ` Ilari Liusvaara
2011-03-11 13:48                 ` Nguyen Thai Ngoc Duy
2011-03-11 14:10                   ` Alexander Miseler
2011-03-11 14:27                     ` Nguyen Thai Ngoc Duy
2011-03-11 22:42                       ` Sam Vilain
2011-03-12 21:41                       ` Alexander Miseler
2011-03-11 12:43             ` Ævar Arnfjörð Bjarmason
2011-03-11 14:24               ` code.sculptor
2011-03-17 23:40             ` Summer of Code project ideas Jakub Narebski
2011-03-22 20:31               ` Heiko Voigt
2011-03-22 22:55               ` J.H.
2011-03-25  1:11               ` Pat Thoyts
2011-03-25 13:02                 ` Jakub Narebski
2011-03-03 21:04 ` Google Summer of Code 2011 Ramkumar Ramachandra
2011-03-03 22:08   ` Jonathan Nieder
2011-03-07 12:15   ` Sverre Rabbelier
2011-03-08 12:33     ` Ramkumar Ramachandra
2011-03-08 12:49       ` Sverre Rabbelier
2011-03-03 22:38 ` Jens Lehmann
2011-03-05  4:05 ` Christian Couder
2011-03-06 19:24 ` Sam Vilain
2011-03-07 19:40 ` Heiko Voigt
2011-03-07 20:50   ` Fredrik Gustafsson
2011-03-09 21:52     ` Heiko Voigt
2011-03-09 23:16       ` Fredrik Gustafsson
2011-03-10 22:46         ` Heiko Voigt
2011-03-09 15:18 ` Thomas Rast

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=20110312002017.GA16081@elie \
    --to=jrnieder@gmail.com \
    --cc=Jens.Lehmann@web.de \
    --cc=artagnon@gmail.com \
    --cc=chriscool@tuxfamily.org \
    --cc=david.barr@cordelta.com \
    --cc=git@vger.kernel.org \
    --cc=jnareb@gmail.com \
    --cc=newren@gmail.com \
    --cc=peff@peff.net \
    --cc=spearce@spearce.org \
    --cc=trast@student.ethz.ch \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.