From: Josh Triplett <josh@freedesktop.org>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Junio C Hamano <junkio@cox.net>, git@vger.kernel.org
Subject: Re: [RFC] git-split: Split the history of a git repository by subdirectories and ranges
Date: Mon, 23 Oct 2006 12:27:49 -0700 [thread overview]
Message-ID: <453D17B5.6070203@freedesktop.org> (raw)
In-Reply-To: <Pine.LNX.4.64.0610230846420.3962@g5.osdl.org>
[-- Attachment #1: Type: text/plain, Size: 2586 bytes --]
Linus Torvalds wrote:
>
> On Mon, 23 Oct 2006, Josh Triplett wrote:
>>> I wonder if using "git-log --full-history -- $project" to let the core
>>> side omit commits that do not change the $project (but still give you
>>> all merged branches) would have made your job any easier?
>> I don't think it would. We still need to know what commit to use as the
>> parent of any given commit, so we don't want commits in the log output
>> with parents that don't exist in the log output. And rewriting parents
>> in git-log based on which revisions change the specified subdirectory
>> seems like a bad idea.
>
> Umm.. You didn't realize that git log already _does_ exactly that?
No, I didn't, primarily because the git log output I've scrutinized most
carefully came from git log --pretty=raw, which doesn't rewrite parents
even when pointed at a subdirectory.
> You need to rewrite the parents in order to get a nice and readable
> history, which in turn is needed for any visualizer. So git has long done
> the parent rewriting in order to be able to do things like
>
> gitk drivers/char
>
> on the kernel.
>
> And yes, that's done by the core revision parsing code, so when you do
>
> git log --full-history --parents -- $project
>
> you do get the rewritten parent output (of course, it's not actually
> _simplified_, so you get a fair amount of duplicate parents etc which
> you'd still have to simplify and which don't do anything at all).
>
> Without the "--full-history", you get a simplified history, but it's
> likely to be _too_ simplified for your use, since it will not only
> collapse multiple identical parents, it will also totally _remove_ parents
> that don't introduce any new content.
Considering that git-split does exactly that (remove parents that don't
introduce new content, assuming they changed things outside the
subtree), that might actually work for us. I just checked, and the
output of "git log --parents -- $project" on one of my repositories
seems to show the same sequence of commits as git log --parents on the
head commit printed by git-split $project (apart from the rewritten
sha1s), including elimination of irrelevant merges.
> So there are multiple levels of history simplification, and right now the
> internal git revision parser only gives you two choices: "none"
> (--full-history) and "extreme" (which is the default when you give a set
> of filenames).
I don't think we need any middle ground here; why might we want less
simplification?
- Josh Triplett
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 252 bytes --]
next prev parent reply other threads:[~2006-10-23 19:27 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-27 8:05 [RFC] git-split: Split the history of a git repository by subdirectories and ranges Josh Triplett
2006-09-27 10:13 ` Junio C Hamano
2006-09-27 11:59 ` Andy Whitcroft
2006-09-27 19:08 ` Junio C Hamano
2006-09-27 19:31 ` Junio C Hamano
2006-10-23 10:17 ` Josh Triplett
2006-10-23 15:52 ` Linus Torvalds
2006-10-23 19:27 ` Josh Triplett [this message]
2006-10-23 19:50 ` Linus Torvalds
2006-10-23 20:07 ` Jakub Narebski
2006-10-23 20:52 ` Josh Triplett
2006-10-23 21:06 ` Linus Torvalds
2006-10-23 21:19 ` Linus Torvalds
2006-10-24 14:56 ` Johannes Schindelin
2006-10-24 15:19 ` Linus Torvalds
2006-10-25 0:10 ` Junio C Hamano
2006-10-25 0:19 ` Jakub Narebski
2006-10-25 1:59 ` Josh Triplett
2006-10-25 2:13 ` Junio C Hamano
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=453D17B5.6070203@freedesktop.org \
--to=josh@freedesktop.org \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=torvalds@osdl.org \
/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.