From: Yann Dirson <ydirson@altern.org>
To: Catalin Marinas <catalin.marinas@gmail.com>
Cc: git@vger.kernel.org, Guilhem Bonnefille <guilhem.bonnefille@gmail.com>
Subject: Rebasing stgit stacks
Date: Mon, 15 Jan 2007 21:24:12 +0100 [thread overview]
Message-ID: <20070115202412.GE9761@nan92-1-81-57-214-146.fbx.proxad.net> (raw)
In-Reply-To: <8b65902a0701150526j5a954529xf45b2d0348a77573@mail.gmail.com>
On Mon, Jan 15, 2007 at 02:26:36PM +0100, Guilhem Bonnefille wrote:
> >What you should have done is moving your stack base from your old
> >origin branch to remotes/trunk - something that StGIT does not support
> >yet from command-line, but I've done this manually in the past
> >(migrating an StGIT stack after re-running a full git-cvsimport after
> >the original cvs branch got corrupted).
I have started work on implementing "stg pull --to <newbase>", but I'm
facing some issues.
"stg pull", after popping all patches, currently calls "git pull",
which indeed has 2 roles:
- running "git fetch" on the parent branch
- updating the head of the stack (which matches the base since
no patch is applied), by relying on git-pull to fast-forward the
stack head
The latter is, unless I miss something:
- overkill when what we want is just to move the head to another place
- problematic when the parent branch is one that would be tracker with
"+" in the remote pull line (eg. "next", "pu", or an stgit stack). In
that case, although "git fetch" refuses to update the parent head
because it would not be a fast-forward, git-pull then attempt to do a
merge, which completely breaks expectations.
What my implementation of "pull --to" does is just moving the head
with the following code added to git.py:
def move_branch(tree_id):
"""Move HEAD to another commit
"""
__set_head(tree_id)
switch(tree_id)
if os.path.isfile(os.path.join(basedir.get(), 'MERGE_HEAD')):
os.remove(os.path.join(basedir.get(), 'MERGE_HEAD'))
That only partly works - that is, it works if I add the expected "+"
in the remote refspec line (or if I add an explicit refspec on
command-line). There is surely a way for "stg clone" to detect the
parent is an stgit stack, and we can possibly have the clone operation
setup things right from the start. I remember someone suggesting that
such branches advertise their status so git-clone itself would add
this - not sure this is planned for 1.5.0, though.
Even when this fully works, I'm reluctant to leave things that way,
because would be easy to forget the --to, and get a broken stack, with
"stg diff" being confused enough to happily show this:
|bar$ stg diff; echo $?
|* Unmerged path file
|0
I would be of the opinion to stop calling "git pull" entirely, and use
"git fetch and the git.move_branch show above. Unless I hear about
better ideas, my next patch set will be along those lines.
Best regards,
--
Yann.
next prev parent reply other threads:[~2007-01-15 20:24 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-09 21:35 Howto use StGit and git-svn at same time Guilhem Bonnefille
2007-01-09 21:41 ` Guilhem Bonnefille
2007-01-09 22:41 ` Yann Dirson
2007-01-15 13:26 ` Guilhem Bonnefille
2007-01-15 20:24 ` Yann Dirson [this message]
2007-01-15 22:46 ` Rebasing stgit stacks Catalin Marinas
2007-01-15 23:39 ` Yann Dirson
2007-01-16 22:42 ` Catalin Marinas
2007-01-16 23:17 ` Yann Dirson
2007-01-16 23:30 ` Jakub Narebski
2007-01-17 9:03 ` Karl Hasselström
2007-01-17 11:07 ` David Kågedal
2007-01-17 19:34 ` Yann Dirson
2007-01-17 20:53 ` Yann Dirson
2007-01-18 12:06 ` Catalin Marinas
2007-01-18 19:42 ` Yann Dirson
2007-01-19 9:40 ` Jakub Narebski
2007-01-20 13:17 ` Yann Dirson
2007-01-20 19:16 ` Jakub Narebski
2007-01-20 20:07 ` Yann Dirson
2007-01-22 23:12 ` Catalin Marinas
2007-01-18 9:05 ` Catalin Marinas
2007-01-18 20:52 ` Yann Dirson
2007-01-19 9:47 ` Jakub Narebski
2007-01-22 17:54 ` Catalin Marinas
2007-01-22 19:47 ` Yann Dirson
2007-01-22 22:58 ` Catalin Marinas
2007-01-23 7:49 ` Yann Dirson
2007-01-23 22:03 ` Catalin Marinas
2007-01-24 0:05 ` Yann Dirson
2007-01-24 12:37 ` Catalin Marinas
2007-01-24 20:03 ` Yann Dirson
2007-01-28 4:33 ` Theodore Tso
2007-01-28 10:25 ` Yann Dirson
2007-01-28 23:21 ` Catalin Marinas
2007-01-17 21:30 ` Yann Dirson
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070115202412.GE9761@nan92-1-81-57-214-146.fbx.proxad.net \
--to=ydirson@altern.org \
--cc=catalin.marinas@gmail.com \
--cc=git@vger.kernel.org \
--cc=guilhem.bonnefille@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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).