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

Re: [ITCH] pull.default

From
Ramkumar Ramachandra <artagnon@gmail.com>
Date
Mar 18, 2013, 19:21 UTC
Message-ID
<CALkWK0kftNGt-xhLH8f+tVUNUF_qBDkTVcAEoiQKp_NRdPOftg@mail.gmail.com>
In-Reply-To
<7vy5dkmt7k.fsf@alter.siamese.dyndns.org>
Junio C Hamano wrote:
Show 31 quoted lines
> Ramkumar Ramachandra <artagnon@gmail.com> writes:
>
>> I usually use `git fetch`, inspect state, and then merge/ rebase
>> accordingly.  Unfortunately, this is very sub-optimal as I can
>> automate this 80% of the time.  I want to be able to decide what to do
>> on a repository-specific basis, and hence propose a pull.default which
>> can be set to the following:
>> 1. fetch.  Just fetch.  (I will set this as my default in ~/.gitconfig)
>> 2. fast-forward.  Fetch.  If the FETCH_HEAD is directly ahead of HEAD,
>> `stash`, merge, and stash apply.  Otherwise, do nothing.
>> 3. rebase.  Fetch.  stash, rebase, stash apply. `git pull n` will do
>> rebase --onto master HEAD~n instead of rebase.
>> 4. reset.  Fetch, stash, reset --hard FETCH_HEAD, stash apply.
>>
>> Ofcourse, it should print a message saying what it did at the end.
>>
>> What do you think?
>
> Many other possibilities are missing.  "fetch and merge", for
> example.
>
> You seem to be generalizing the "--rebase" and "--ff-only" options
> of "git pull" with 2 and 3, which may (or may not) make sense.
>
> I think you can shrink and enhance the above repertoire at the same
> time by separating "do I want to have stash and stash pop around"
> bit into an orthogonal axis.  The other orthogonal axes are "Under
> what condition do I integrate the work from the upstream?" (e.g.
> "only when I do not have anything, aka, ff-only") and "How would I
> integrate the work from the upstream?" (e.g. "rebase my work" and
> "discard anything I did aka reset --hard").

Excellent I was hoping to start a discussion like this. My initial thought was designing a custom script that git-pull will execute like a hook; we should, however, be able to get away with designing enough configuration orthogonal configuration variables. For anything more complex, just do it by hand!

Show 6 quoted lines
> By the way, I do not think you should start your design from a
> configuration (this is a general principle, not limited to this
> case).  Think about what the smallest number of independent options
> you need to add to express various workflows, and then turn them
> into configuration variables that can set the default, all of which
> have to be overridable from the command line.
Will do.  Expect a draft soon.
Previous: Junio C HamanoNext: Ramkumar Ramachandra
Message 3 of 4 in “[ITCH] pull.default”
  1. Ramkumar RamachandraMar 18, 2013
  2. Junio C HamanoMar 18, 2013
  3. Ramkumar RamachandraMar 18, 2013
  4. Ramkumar RamachandraApr 13, 2013

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.