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

Re: [PATCH] bash completion: Support "unpushed commits" warnings in __git_ps1

From
Thomas Rast <trast@student.ethz.ch>
Date
Jun 7, 2010, 07:42 UTC
Message-ID
<201006070942.34753.trast@student.ethz.ch>
In-Reply-To
<4C0C09BF.4070503@pileofstuff.org>
Andrew Sayers wrote:
Show 6 quoted lines
> 
> I'm not averse to adding a config setting, or to exploring the
> "--no-metadata" case.  I am concerned about the strict time constraints
> for code called in a command prompt though.  For instance, calling
> git-svn could easily make your prompt take over half a second to respond
> because of all the Perl you'd have to compile.
True, I forgot about that.
> I'd also want a few
> real-world use cases and a nod from Shawn before diverging any further
> from the existing GIT_PS1_FOO= convention.
> Having said all that, I'm quite happy to resubmit with
> GIT_PS1_SHOWUNPUSHED=svn treated like GIT_PS1_SHOWUNPUSHED=1 when
> $GIT_DIR/svn doesn't exist.

There's the precedent of bash.showDirtyState that allows you to disable the +* indicators _per repository_. The latter idea also sounds reasonable, though I personally would find the configuration more useful. I have several repos that push to both git (for real work) and SVN (for buildbots) where I'd prefer the indicator to refer to git.

Show 8 quoted lines
> > How about starting with
> > 
> >   git log -1 --first-parent --grep="^git-svn-id: $remote_branch"
> 
> Good idea about "-1" and "--grep", but multi-parent commits aren't
> compatible with SVN, so I don't see how "--first-parent" is useful here?
>  In fact I'm tempted to look for merge commits and print a big warning
> when one is found.
Please don't; you'd immediately lose me as a user :-)

First, --first-parent is actually how git-svn looks for the git-svn-id, and any other search is liable to turn up wrong results. See working_head_info in git-svn.perl.

Second, the behaviour of git-svn with merges is very useful and well-defined. (Yes, there are stern warnings in the manpage, but if you know what you're doing just ignore them...)

'git svn dcommit' will first determine the correct upstream branch according to the above logic, i.e., it *always* commits to the first-parent ancestry. Then it commits the diff along this line of history (i.e., always diffing to the first parent) but it does rewrite the commits so that merges are preserved.

In pictures, if you have
    o---B---o---o---o    trunk
         \
          *---*---*---*    topic
and run 'git checkout trunk; git merge topic; git svn dcommit' you get
    o---B---o---o---o---M'    trunk
         \             /
          *---*---*---*    topic

(writing M' since this is already the rewritten version of an original merge M). M' looks to SVN like a 'git merge --squash topic' because git-svn doesn't (yet?) store the merge info.

So you get to keep the git merge info, which is very useful for later merges of 'topic'.

Note: NEVER run 'git checkout topic; git merge trunk'.  git-svn will
think (because of the first-parent rule) that you want to commit on
top of B!  I don't know what happens next but I expect it won't be too
pretty.
-- 
Thomas Rast
trast@{inf,student}.ethz.ch
Previous: Andrew SayersNext: Andrew Sayers
Message 6 of 20 in “bash completion: Support "unpushed commits" warnings in __git_ps1”
  1. bash completion: Support "unpushed commits" warnings in __git_ps1Andrew Sayers, Jun 6, 2010
  2. Thomas RastJun 6, 2010
  3. Andrew SayersJun 6, 2010
  4. Jakub NarebskiJun 6, 2010
  5. Andrew SayersJun 6, 2010
  6. Thomas RastJun 7, 2010
  7. [RFC/PATCHv2] bash completion: Support "divergence from upstream" warnings in __git_ps1Andrew Sayers, Jun 8, 2010
  8. Peter KjellerstedtJun 9, 2010
  9. John TapsellJun 9, 2010
  10. Steven MichalskeJun 9, 2010
  11. Michael J GruberJun 9, 2010
  12. Michael J GruberJun 9, 2010
  13. Michael J GruberJun 9, 2010
  14. 0/2 bash completion: Support "divergence from upstream" warnings in __git_ps1Thomas Rast, Jun 10, 2010
  15. 1/2 rev-list: introduce --count optionThomas Rast, Jun 10, 2010
  16. 2/2 bash completion: Support "divergence from upstream" warnings in __git_ps1Thomas Rast, Jun 10, 2010
  17. SZEDER GáborJun 12, 2010
  18. Michael J GruberJun 10, 2010
  19. Thomas RastJun 10, 2010
  20. Thomas RastJun 6, 2010

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.