From: Steven Grimm <koreth@midwinter.com>
To: Steven Walter <stevenrwalter@gmail.com>
Cc: 'git' <git@vger.kernel.org>
Subject: Re: StGIT (or guilt) + git-svn?
Date: Wed, 25 Jul 2007 14:35:16 +0800 [thread overview]
Message-ID: <46A6EF24.4040606@midwinter.com> (raw)
In-Reply-To: <20070724234817.GA29700@dervierte>
Steven Walter wrote:
> You certainly could do local versioning this way, but it isn't how I
> accomplish the same thing. I keep another branch on top of my "public"
> svn commits for local stuff. If I always run git-svn dcommit from the
> public branch, the local changes will stay local. After committing, I
> just have to rebase the local branch on onto git-svn.
Do you mix your public and private commits on the private branch, then
cherry-pick some of them over to the public branch before running
dcommit? Or do you have some other workflow?
That was actually my first suggestion to him, but he pointed out (and I
had to agree) that that would mean he's always just one mistake away
from publishing his local changes. All it takes is getting interrupted
for a moment and mistakenly thinking he already switched to the public
branch. He wants some less human-error-prone way to tell the system that
a particular change and/or a particular file is not intended for
publication, and for the system to just honor that without further human
intervention.
Actually, one could argue that the above isn't a git-svn issue at all.
You could reasonably want the same thing from git-push too (and even
from pull, though that'd be trickier.) I guess it'd take the form of
marking a commit as local-only, and having the system automatically
rebase all the local-only commits on top of the public ones.
Maybe a wrapper than maintains a pair of underlying git branches for
each user-visible branch would work. If you have a branch "foo" with
some public and some private changes (private ones in lower case here):
A---B---C---D---e---f---g foo
^ foo-public
Now if you commit a new private revision, it's like normal:
A---B---C---D---e---f---g---h foo
^ foo-public
But if you commit a new public revision, we do something like
git commit
git checkout foo-public
git cherry-pick foo
git checkout foo
git rebase foo-public
to get
A---B---C---D---H---e---f---g foo
^ foo-public
Then, when it comes time to do the push / dcommit, we always switch to
the foo-public branch first. We push / dcommit, then checkout foo and
rebase it on foo-public again (since svn dcommit will leave foo-public
pointing at a different revision.)
This seems like it should work in the context of git-svn with its
mostly-linear history. Not sure if it'd fall flat on its face in the
presence of lots of branching and merging.
I also suspect I've more or less just described StGIT and this would be
a big waste of time to reinvent from scratch.
-Steve
next prev parent reply other threads:[~2007-07-25 6:35 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-24 10:20 StGIT (or guilt) + git-svn? Steven Grimm
2007-07-24 11:27 ` Steven Walter
2007-07-24 12:19 ` Steven Grimm
2007-07-24 19:39 ` Josef Sipek
2007-07-24 23:48 ` Steven Walter
2007-07-25 6:35 ` Steven Grimm [this message]
2007-07-25 22:25 ` Steven Walter
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=46A6EF24.4040606@midwinter.com \
--to=koreth@midwinter.com \
--cc=git@vger.kernel.org \
--cc=stevenrwalter@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).