From: Sven Verdoolaege <skimo@kotnet.org>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH 6/6] Add git-rewrite-commits
Date: Mon, 16 Jul 2007 22:04:04 +0200 [thread overview]
Message-ID: <20070716200404.GT999MdfPADPa@greensroom.kotnet.org> (raw)
In-Reply-To: <Pine.LNX.4.64.0707160054340.14781@racer.site>
On Mon, Jul 16, 2007 at 01:38:11AM +0100, Johannes Schindelin wrote:
> Didn't I mention that it was a severe limitation to think of the sha1
> mapping of a 1-to-1 mapping? Think of it more as a relation.
The mapping is used in several operations.
First, there are several things that can happen to a commit
- it's pruned. This includes, for me, path pruning, matching
and a commit filter returning no SHA1s.
- it's rewritten to another commit that can be considered the
"moral equivalent" of that commit. This occurs when a commit
is not pruned, but something else happened to the commit itself or
one of its ancestors. This excludes, for me, the case
where a commit filter returns more than one SHA1.
- it's replaced by more than one SHA1. This can only happen
in a commit filter.
There are at least four operations in which this mapping is used:
- if the parents of a commit have been rewritten to one or more
commits, then they are replaced by the new commits.
If any parent has been pruned, then it is replaced by
the result of applying this operation on _its_ parents.
- any reference (in refs/) that points to a rewritten or pruned
commit is removed and
* if the commit was rewritten to a single commit, then it is
replaced by this commit
* otherwise, there is no moral equivalent single commit, but
we want to ensure we can still access the new commits, so
I create several references, either to each of the many
commits the old commit was rewritten to, or to each of
its nearest unpruned ancestors (i.e., the same set as
described in the previous operation).
- a SHA1 of a commit that appears in a commit message is replaced
by the rewritten commit iff it was rewritten to a single commit.
That is, if the commit was pruned or rewritten (through a commit
filter to more than one commit), then the SHA1 is left alone.
- the mapping available to filters
* if the commit was pruned, an empty file is created
* otherwise a file is created containing all rewritten SHA1s
I understand you want the second operation to only apply
to refs explicitly mentioned on the command line.
What else would you like to change?
skimo
next prev parent reply other threads:[~2007-07-16 20:04 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-12 19:05 [PATCH 0/6] Add git-rewrite-commits v2 skimo
2007-07-12 19:05 ` [PATCH 1/6] revision: allow selection of commits that do not match a pattern skimo
2007-07-12 19:05 ` [PATCH 2/6] export get_short_sha1 skimo
2007-07-12 19:06 ` [PATCH 3/6] Define ishex(x) in git-compat-util.h skimo
2007-07-14 10:18 ` Johannes Schindelin
2007-07-12 19:06 ` [PATCH 4/6] refs.c: lock cached_refs during for_each_ref skimo
2007-07-12 19:06 ` [PATCH 5/6] revision: mark commits that didn't match a pattern for later use skimo
2007-07-12 19:06 ` [PATCH 6/6] Add git-rewrite-commits skimo
2007-07-13 8:01 ` Sven Verdoolaege
2007-07-14 12:49 ` Johannes Schindelin
2007-07-14 19:26 ` Junio C Hamano
2007-07-15 14:07 ` Sven Verdoolaege
2007-07-14 20:15 ` Sven Verdoolaege
2007-07-15 14:44 ` Sven Verdoolaege
2007-07-16 0:38 ` Johannes Schindelin
2007-07-16 10:24 ` Sven Verdoolaege
2007-07-18 11:02 ` Johannes Schindelin
2007-07-18 12:05 ` Sven Verdoolaege
2007-07-16 20:04 ` Sven Verdoolaege [this message]
2007-07-16 21:47 ` Sven Verdoolaege
2007-07-18 11:05 ` Johannes Schindelin
2007-07-18 11:17 ` Johannes Schindelin
2007-07-19 12:40 ` Sven Verdoolaege
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=20070716200404.GT999MdfPADPa@greensroom.kotnet.org \
--to=skimo@kotnet.org \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=skimo@liacs.nl \
/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).