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

Re: Google Summer of Code 2013 (GSoC13)

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 18, 2013, 22:37 UTC
Message-ID
<7vehgd9rkg.fsf@alter.siamese.dyndns.org>
In-Reply-To
<20130218210709.GC27308@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 19 quoted lines
> This is not related to GSoC anymore, but I think handling multiple
> versions is already pretty easy. You can just install to
> "$HOME/local/git/$TAGNAME" or similar, and then symlink the "bin/git"
> binary from there into your PATH as git.$TAGNAME (e.g., git.v1.7.8). Git
> already takes care of the messy bits, like making sure sub-programs are
> invoked from the same git version.
>
> I already do this automagically with this script:
>
>   https://github.com/peff/git/blob/meta/install/prefix
>
> I just set "prefix" in the Makefile based on the script, and when I
> "make install" tags or topic branches, they go to the right place (and
> the "links" script in the same directory maintains the symlinks for me).
>
> I never bothered to even submit those scripts to contrib, because I
> figured they were so specific to my setup, and to keeping dozens of git
> versions around (when debugging, it's nice to be able to check an old
> version's behavior without even having to build it).

Yeah, I have been using the Make (in the todo branch, to be checked out in Meta/ subdirectory of the working tree) script for exactly this. After tagging a release, I'd do

	git checkout -B snap v1.8.1.3
        Meta/Make install install-doc

to install them in $inst_prefix/git-snap-v1.8.1.3. A "rungit" script can then be used like:

	rungit v1.7.0 checkout blah

-- rungit script -- >8 -- rungit script -- #!/bin/sh # Run various vintage of git

variant="${0##*/}" &&
: ${RUNGIT_BASE=$HOME/g/$(getarch)} &&
case "$variant" in
rungit)
	case $# in 
	0)
		echo >&2 "which version?"
		exit 1
		;;
	esac
	variant=$1
	shift
	;;
esac &&
case "$variant" in
-l)
	for d in "$RUNGIT_BASE/"git-*/bin/git
	do
		d=$(basename ${d%/bin/git})
		d=${d#git-}
		d=${d#snap-}
		echo "$d"
	done
	exit
	;;
git-*)
	variant=${variant#git-} ;;
v[0-9]*)
	variant=snap-$variant ;;
esac &&
d="$RUNGIT_BASE/git-$variant" &&
if test -f "$d/bin/git"
then
	exec "$d/bin/git" "$@"
else
	echo >&2 "$variant: No such variant for $a"
	exit 1
fi
Previous: Jeff KingNext: Jonathan Nieder
Message 28 of 47 in “Google Summer of Code 2013 (GSoC13)”
  1. Thomas RastFeb 18, 2013
  2. Jeff KingFeb 18, 2013
  3. Ramkumar RamachandraFeb 18, 2013
  4. Jeff KingFeb 18, 2013
  5. Ramkumar RamachandraFeb 18, 2013
  6. Jonathan NiederFeb 18, 2013
  7. Thomas RastFeb 18, 2013
  8. Ramkumar RamachandraFeb 19, 2013
  9. Jeff KingFeb 18, 2013
  10. Ramkumar RamachandraFeb 19, 2013
  11. Thomas RastFeb 18, 2013
  12. Jens LehmannFeb 18, 2013
  13. Junio C HamanoFeb 18, 2013
  14. Ramkumar RamachandraFeb 19, 2013
  15. Jonathan NiederFeb 19, 2013
  16. Ramkumar RamachandraFeb 19, 2013
  17. Thomas RastFeb 19, 2013
  18. Junio C HamanoFeb 19, 2013
  19. Thomas RastFeb 19, 2013
  20. Junio C HamanoFeb 19, 2013
  21. Ramkumar RamachandraFeb 19, 2013
  22. Junio C HamanoFeb 19, 2013
  23. Jonathan NiederFeb 18, 2013
  24. Jens LehmannFeb 18, 2013
  25. Christian CouderFeb 20, 2013
  26. Ramkumar RamachandraFeb 18, 2013
  27. Jeff KingFeb 18, 2013
  28. Junio C HamanoFeb 18, 2013
  29. Potential GSoC13 projects (Re: Google Summer of Code 2013 (GSoC13))Jonathan Nieder, Feb 18, 2013
  30. Duy NguyenFeb 19, 2013
  31. Jeff KingFeb 18, 2013
  32. Jonathan NiederFeb 18, 2013
  33. Shawn PearceFeb 20, 2013
  34. Christian CouderFeb 20, 2013
  35. Matthieu MoyFeb 20, 2013
  36. Thomas RastFeb 21, 2013
  37. Michael SchubertFeb 20, 2013
  38. Carlos Martín NietoFeb 21, 2013
  39. Florian AchleitnerFeb 25, 2013
  40. Junio C HamanoFeb 25, 2013
  41. Thomas RastFeb 18, 2013
  42. Ronan KeryellFeb 18, 2013
  43. Thomas RastFeb 18, 2013
  44. Ramkumar RamachandraFeb 18, 2013
  45. Thomas RastFeb 18, 2013
  46. Duy NguyenFeb 19, 2013
  47. Jaseem AbidFeb 26, 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.