{"thread":{"id":"15652","subject":"A note from the interim Git maintainer","startedAt":"2008-09-24T15:46:32Z","lastAt":"2008-10-01T15:37:03Z","messageCount":7,"participants":["Shawn O. Pearce","Mike Ralphson","Jeff King"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"91483","messageId":"20080924154632.GR3669@spearce.org","threadId":"15652","inReplyTo":null,"subject":"A note from the interim Git maintainer","fromName":"Shawn O. Pearce","fromEmail":"spearce@spearce.org","sentAt":"2008-09-24T15:46:32Z","receivedAt":"2008-09-24T15:46:32Z","isPatch":false,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"As mentioned recently by Junio, Junio is away on family leave and\na much deserved vacation until ~Oct 6th.  Until he gets back I am\noffering up my services as patch monkey to keep us moving along.\n\nMy tree is being published here:\n\n  git:    git://repo.or.cz/git/spearce.git\n\t\t  repo.or.cz/srv/git/git/spearce.git\n          http://repo.or.cz/r/git/spearce.git\n\n  gitweb: http://repo.or.cz/w/git/spearce.git\n\n\nThe usual maint/master/next/pu stuff applies.  I'm basically just\npicking up from where Junio left off.\n\nI would appreciate it if anyone who normally tracks Junio's \"next\"\nor \"master\" branch for their production work can switch over to my\nnext (or master) branch for the next few weeks.  Something about\nmany eyeballs and fewer bugs.\n\nPatches can be CC'd to me, or just sent to the list.  If I have\ndropped something, please feel free to give me a gentle prod.\n\nI know that I am quite behind on git-gui patches. I think I'm going\nto spend the better part of today just on Git to get everything\ncaught up.\n\n-- \nShawn.\n"},{"id":"91678","messageId":"e2b179460809260624n4b329345q3610069af5af75c2@mail.gmail.com","threadId":"15652","inReplyTo":"20080924154632.GR3669@spearce.org","subject":"Re: A note from the interim Git maintainer","fromName":"Mike Ralphson","fromEmail":"mike.ralphson@gmail.com","sentAt":"2008-09-26T13:24:31Z","receivedAt":"2008-09-26T13:24:31Z","isPatch":false,"sender":{"key":"mike.ralphson@gmail.com","avatar":"https://avatars.githubusercontent.com/u/21603?v=4"},"body":"2008/9/24 Shawn O. Pearce <spearce@spearce.org>:\n> My tree is being published here:\n>\n>  git:    git://repo.or.cz/git/spearce.git\n>                  repo.or.cz/srv/git/git/spearce.git\n>          http://repo.or.cz/r/git/spearce.git\n>\n>  gitweb: http://repo.or.cz/w/git/spearce.git\n>\n> The usual maint/master/next/pu stuff applies.  I'm basically just\n> picking up from where Junio left off.\n>\n> I would appreciate it if anyone who normally tracks Junio's \"next\"\n> or \"master\" branch for their production work can switch over to my\n> next (or master) branch for the next few weeks.  Something about\n> many eyeballs and fewer bugs.\n\nNow there are new commits in this tree, Gitbuild\n[http://repo.or.cz/w/git/gitbuild.git] has spearce/master,\nspearce/maint and spearce/next branches and I'm currently running my\nautomated AIX test builds on these branches and pushing the relevant\ntags along.\n\nJeff, if you want to switch your BSD builds to Shawn's tree too, I\nmade and pushed a tiny change to the gitbuild.sh script to allow for\nthe spearce/{branch} format becoming spearce_{branch} in the tag\nnames.\n\nCheers, Mike\n"},{"id":"91719","messageId":"20080926225423.GA25502@coredump.intra.peff.net","threadId":"15652","inReplyTo":"e2b179460809260624n4b329345q3610069af5af75c2@mail.gmail.com","subject":"Re: A note from the interim Git maintainer","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2008-09-26T22:54:23Z","receivedAt":"2008-09-26T22:54:23Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Fri, Sep 26, 2008 at 02:24:31PM +0100, Mike Ralphson wrote:\n\n> Jeff, if you want to switch your BSD builds to Shawn's tree too, I\n> made and pushed a tiny change to the gitbuild.sh script to allow for\n> the spearce/{branch} format becoming spearce_{branch} in the tag\n> names.\n\nThanks, that's a good idea. I'm building Shawn's master (on my todo is\nadding the other branches, too, but I need to tweak my script or tweak\ngitbuild.sh and switch to it).\n\n-Peff\n"},{"id":"91828","messageId":"e2b179460809290051q8ca76a4k7cf0af2748a5f0fc@mail.gmail.com","threadId":"15652","inReplyTo":"20080926225423.GA25502@coredump.intra.peff.net","subject":"Re: A note from the interim Git maintainer","fromName":"Mike Ralphson","fromEmail":"mike.ralphson@gmail.com","sentAt":"2008-09-29T07:51:29Z","receivedAt":"2008-09-29T07:51:29Z","isPatch":false,"sender":{"key":"mike.ralphson@gmail.com","avatar":"https://avatars.githubusercontent.com/u/21603?v=4"},"body":"2008/9/26 Jeff King <peff@peff.net>\n>\n> On Fri, Sep 26, 2008 at 02:24:31PM +0100, Mike Ralphson wrote:\n>\n> > Jeff, if you want to switch your BSD builds to Shawn's tree too, I\n> > made and pushed a tiny change to the gitbuild.sh script to allow for\n> > the spearce/{branch} format becoming spearce_{branch} in the tag\n> > names.\n>\n> Thanks, that's a good idea. I'm building Shawn's master (on my todo is\n> adding the other branches, too, but I need to tweak my script or tweak\n> gitbuild.sh and switch to it).\n\nFeel free to push changes to gitbuild.sh, including getting rid of\nanything which looks environment-specific.\n\nMike\n"},{"id":"92035","messageId":"20081001071653.GA21174@sigill.intra.peff.net","threadId":"15652","inReplyTo":"e2b179460809290051q8ca76a4k7cf0af2748a5f0fc@mail.gmail.com","subject":"obscure platform autobuilders","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2008-10-01T07:16:53Z","receivedAt":"2008-10-01T07:16:53Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Mon, Sep 29, 2008 at 08:51:29AM +0100, Mike Ralphson wrote:\n\n> Feel free to push changes to gitbuild.sh, including getting rid of\n> anything which looks environment-specific.\n\nI actually went a step further and revamped the architecture a bit.\nCheck out the \"platform\" branch in gitbuild.git. My goal was to try to\ninclude more information in the gitbuild repository about exactly what\ngoes into the test setup for each platform.\n\nI'm currently building, testing, and pushing FreeBSD 6.1 and Solaris 2.8\nwith it (you can see the copious tests I am skipping in\njk/solaris/config).\n\nIf you like this approach, please go ahead and add an \"mr/aix\" profile\nwith your setup. See the README for details, and let me know if you have\nquestions.  The script is a mish-mash of yours, mine, and some extra\nrewrites. I wouldn't be surprised if it needs a tweak or two. :)\n\n-Peff\n"},{"id":"92043","messageId":"e2b179460810010346j23617764i8134c1f24b2746f0@mail.gmail.com","threadId":"15652","inReplyTo":"20081001071653.GA21174@sigill.intra.peff.net","subject":"Re: obscure platform autobuilders","fromName":"Mike Ralphson","fromEmail":"mike.ralphson@gmail.com","sentAt":"2008-10-01T10:46:43Z","receivedAt":"2008-10-01T10:46:43Z","isPatch":false,"sender":{"key":"mike.ralphson@gmail.com","avatar":"https://avatars.githubusercontent.com/u/21603?v=4"},"body":"2008/10/1 Jeff King <peff@peff.net>:\n> On Mon, Sep 29, 2008 at 08:51:29AM +0100, Mike Ralphson wrote:\n>> Feel free to push changes to gitbuild.sh, including getting rid of\n>> anything which looks environment-specific.\n>\n> I actually went a step further and revamped the architecture a bit.\n> Check out the \"platform\" branch in gitbuild.git. My goal was to try to\n> include more information in the gitbuild repository about exactly what\n> goes into the test setup for each platform.\n\nVery nice!\n\n> I'm currently building, testing, and pushing FreeBSD 6.1 and Solaris 2.8\n> with it (you can see the copious tests I am skipping in\n> jk/solaris/config).\n\nMy googling led me to think that INTERNAL_QSORT would be a good idea\non at least some versions of Solaris... it may depend on the fs\nthough.\n\n> If you like this approach, please go ahead and add an \"mr/aix\" profile\n> with your setup. See the README for details, and let me know if you have\n> questions.  The script is a mish-mash of yours, mine, and some extra\n> rewrites. I wouldn't be surprised if it needs a tweak or two. :)\n\nHow about this - let me know if ok, and I'll push it.\n\ndiff --git a/README b/README\nindex 184de11..e91037f 100644\n--- a/README\n+++ b/README\n@@ -10,7 +10,8 @@ several files:\n   - 'config', a shell script sourced by the build script to override any\n     variables. See below for more information.\n\n-  - 'branches', a list of branches, one per line, to build and test\n+  - 'branches', a list of branches, one per line, to build and test.\n+    Lines starting with # are treated as comments\n\n   - 'gitconfig'; if this file exists, it will be used as the .git/config\n     of the built and tested repository. This file should define a remote\n@@ -18,7 +19,16 @@ several files:\n     should be published (i.e., repo.or.cz:/srv/git/git/gitbuild.git).\n\n   - 'config.mak'; if this file exists, it will be used as the config.mak\n-    file for building git\n+    file for building git. If it is not present, but there is a\n+    config.mak file in your project directory, it is copied here to\n+    prevent it being removed by 'git clean'\n+\n+  - 'catch', a shell script sourced by the build script if an error\n+    occurs. It is passed the failing command-line in its arguments\n+\n+  - 'finally', a shell script sourced by the build script at the end\n+    of the process. It is passed the exit code of build.sh as its\n+    argument\n\n The convention for platform directory names is \"$initials/$platform\".  A\n build should be initiated from the platform directory. E.g., by putting\n@@ -42,6 +52,9 @@ the variables are:\n\n   - make; the command to invoke make. If not set, defaults to \"gmake\".\n\n+  - project; the path to the directory to build in. If not set, defaults\n+             to ./project relative to the starting directory\n+\n   - path_build; the PATH to use while building git. If not set, the\n                 PATH is left alone.\n\n@@ -52,8 +65,8 @@ Invoking build.sh\n =================\n\n Generally build.sh is invoked without any options, which means it should\n-build all branches one after the other. However, it can be invoked with\n-a branch name to build and test just a single branch.\n+build all specified branches one after the other. However, it can be\n+invoked with a branch name to build and test just a single branch.\n\n The 'project' directory need not be set up beforehand. If it does not\n exist, it will be created as an empty git repository automatically. As\n diff --git a/build.sh b/build.sh\nindex b318af2..0967ff3 100755\n--- a/build.sh\n+++ b/build.sh\n@@ -9,6 +9,7 @@ root=$PWD\n initials=`dirname $PWD 2>/dev/null`; initials=`basename $initials 2>/dev/null`\n name=`basename $PWD 2>/dev/null`\n make=gmake\n+project=project\n . ./config\n name=`echo $name | sed 's/[^A-Za-z0-9.-]/-/g'`\n\n@@ -19,6 +20,8 @@ try() {\n    0) ;;\n    *) echo >&2 \"build failed: $*\"\n       cat >&2 \"$log\"\n+      test -f $root/catch && . $root/catch $*\n+      test -f $root/finally && . $root/finally 1\n       exit 1\n       ;;\n  esac\n@@ -36,6 +39,7 @@ build_branch() {\n   rm -f \"$log\"\n\n   try git checkout -f -q $branch\n+  test -f config.mak && test ! -f $root/config.mak && try cp config.mak $root/\n   try git clean -d -f -q -x\n   test -f $root/config.mak && try cp $root/config.mak config.mak\n\n@@ -59,22 +63,23 @@ build_branch() {\n log=$root/log.build\n rm -f \"$log\"\n\n-if ! test -d project; then\n-  try mkdir project\n-  try cd project\n+if ! test -d $project; then\n+  try mkdir $project\n+  try cd $project\n   try git init\n else\n-  try cd project\n+  try cd $project\n fi\n\n test -f $root/gitconfig && try cp $root/gitconfig .git/config\n try git remote update\n\n if test -z \"$1\"; then\n-  for i in `cat \"$root/branches\"`; do\n+  for i in `cat \"$root/branches\" | grep -v '^#'`; do\n     build_branch $i || exit 1\n   done\n else\n   build_branch $1\n fi\n+test -f $root/finally && . $root/finally 0\n exit 0\n"},{"id":"92066","messageId":"20081001153703.GC4962@coredump.intra.peff.net","threadId":"15652","inReplyTo":"e2b179460810010346j23617764i8134c1f24b2746f0@mail.gmail.com","subject":"Re: obscure platform autobuilders","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2008-10-01T15:37:03Z","receivedAt":"2008-10-01T15:37:03Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Oct 01, 2008 at 11:46:43AM +0100, Mike Ralphson wrote:\n\n> My googling led me to think that INTERNAL_QSORT would be a good idea\n> on at least some versions of Solaris... it may depend on the fs\n> though.\n\nI thought it was purely a performance enhancement. Should it affect the\ntest results?\n\n> How about this - let me know if ok, and I'll push it.\n\nIt mostly looks good, though I would have split it into several distinct\ncommits for readability. A few comments below.\n\n> -  - 'branches', a list of branches, one per line, to build and test\n> +  - 'branches', a list of branches, one per line, to build and test.\n> +    Lines starting with # are treated as comments\n\nMakes sense.\n\n>    - 'config.mak'; if this file exists, it will be used as the config.mak\n> -    file for building git\n> +    file for building git. If it is not present, but there is a\n> +    config.mak file in your project directory, it is copied here to\n> +    prevent it being removed by 'git clean'\n\nI'm not sure I agree with this. My goal was to treat the project\ndirectory as nothing more than a cache, with the gitbuild repo as the\nmaster source driving the tests. So this works backwards to that.\n\nOne of the things I was (and am) considering is rather than doing\ncheckout/clean, to simply export each branch to a new directory and\nbuild from there. Then the \"project\" repo could actually be bare.\n\nHow is this feature intended to be used? It looks like it would\nbasically be invoked one time, when running this script on an existing\ngitbuild setup. So it saves one manual step of copying your config.mak\nto the platform directory. But you still have to manually inspect, add,\nand commit that config.mak file.\n\n> +  - 'catch', a shell script sourced by the build script if an error\n> +    occurs. It is passed the failing command-line in its arguments\n> +\n> +  - 'finally', a shell script sourced by the build script at the end\n> +    of the process. It is passed the exit code of build.sh as its\n> +    argument\n\nThese look like sensible hooks.\n\n> +  - project; the path to the directory to build in. If not set, defaults\n> +             to ./project relative to the starting directory\n> +\n\nI am accomplishing the same thing with a symlink, but I think this is\nprobably cleaner.\n\n> +if ! test -d $project; then\n> +  try mkdir $project\n> +  try cd $project\n\nQuotes around $project? I'm not sure how robust the rest of the script\nis to paths with spaces (which I personally consider insane).\n\n> -  for i in `cat \"$root/branches\"`; do\n> +  for i in `cat \"$root/branches\" | grep -v '^#'`; do\n\nUseless use of cat. :)\n\n  grep -v ^# < \"$root/branches\"\n\n-Peff\n"}]}