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
ASAndrew Sayers <andrew-git@pileofstuff.org>
Date
Jun 6, 2010, 20:49 UTC
Message-ID
<4C0C09BF.4070503@pileofstuff.org>
In-Reply-To
<201006062014.59386.trast@student.ethz.ch>
On 06/06/10 19:14, Thomas Rast wrote:
Show 5 quoted lines
> 
> At least the svn/git setting should definitely be configurable through
> git-config, so that it becomes per-repo configurable.  Also, you could
> try to trigger the svn mode by default if a svn-remote.svn.url exists.
> 

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. 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.

Show 8 quoted lines
> How about starting with
> 
>   git log -1 --first-parent --grep="^git-svn-id: $remote_branch"
> 
> which should be faster and is also closer to the truth.  It still
> doesn't work if the repo was cloned with --no-metadata.  Doing it
> right probably would require a new informational command in git-svn
> that reports the branch name.
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.

I don't see how to actually split out the branch name without calling sed or using one of the disallowed ${} constructs. So I compared the following commands on my PC (2.1 GHz dual-core Athlon) using a repository with 100 empty commits between HEAD and a git-svn-id:

time git log | \
	sed -ne "/^    git-svn-id: / { s/^    git-svn-id: "\
	"$remote_branch\/\([^@]*\).*/\1/p ; q }"
time git log -1 --grep="^git-svn-id: $remote_branch" | \
	sed -ne "s/^    git-svn-id: $remote_branch\/\([^@]*\).*/\1/p"

The former averaged about 0.017 seconds, whereas the latter averaged about 0.015. So when I resubmit this patch, I'll include your version if merge commits are somehow useful to SVNers, or a merge warning otherwise.

Incidentally, a quick bit of etiquette - would you rather I submitted an RFC patch or two with these changes, or wait until the discussion has reached a more stable point?

	- Andrew
Previous: Thomas RastNext: Jakub Narebski
Message 3 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.