git/list[1] front-page[2] threads[3] people[4] search[5] about
 

stg pull/rebase

From
Karl Hasselström <kha@treskal.com>
Date
Jun 7, 2008, 17:22 UTC
Message-ID
<20080607172202.GA5179@diana.vm.bytemark.co.uk>

As I said, I've been thinking a bit about stg pull and stg rebase recently (though I haven't written any code; I don't want to be juggling too many balls at once).

Currently, there's stg rebase which only does rebasing, and stg pull which does either rebase or merge depending on a config option. And on top of that there's config stuff like stgit.pullcmd that is invoked in some cases but not others.

What I think I'd like is the following:
  * Just one command, stg pull. stg rebase is removed.
  * When pull is invoked, the following happens:
      1. The branch we pull from may be updated, depending on the
         configuration. (e.g. git fetch or git svn fetch)
      2. Depending on the configuration (overridable by the
      --fast-forward, --rebase, and --merge options), one of these
      three things happen:
         1. We pop all patches, fast-forward to the new base, and push
            them back. If it's not a fast-forward, we error out.
         2. We pop all patches, reset to the new base, and push them
            back.
         3. We pop all patches, merge with the other branch, then push
            the patches back.
      Fast-forward is the default if no configuration or command-line
      flag is given.

I've personally never had a need for the merge case, but I recall you arguing to keep it, Catalin?

The benefits of this organisation are
  * Configuration of how to update the remote prior to pulling and
    ff/rebase/merge configuration are orthogonal.
  * The default action is to fast-forward, which is probably what most
    users want -- merge is very likely to do the wrong thing, and
    rebase can lose changes.
  * The remote updating is entirely separated from the actual pushing
    and popping of patches, since it runs to completion before we do
    anything else. This means that we can pop, change the base and
    push in a single transaction.
-- 
Karl Hasselström, kha@treskal.com
      www.treskal.com/kalle
Next: Jakub Narebski
Message 1 of 9 in “stg pull/rebase”
  1. Karl HasselströmJun 7, 2008
  2. Jakub NarebskiJun 7, 2008
  3. Karl HasselströmJun 7, 2008
  4. Catalin MarinasJun 10, 2008
  5. Karl HasselströmJun 10, 2008
  6. Catalin MarinasJun 10, 2008
  7. Karl HasselströmJun 11, 2008
  8. Catalin MarinasJun 11, 2008
  9. Karl HasselströmJun 11, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.