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