diff mbox series

scripts: Fix git-checkout.sh to work with non-master branches (take 2)

Message ID 20250221223432.882705-1-andrew.cooper3@citrix.com (mailing list archive)
State New
Headers show
Series scripts: Fix git-checkout.sh to work with non-master branches (take 2) | expand

Commit Message

Andrew Cooper Feb. 21, 2025, 10:34 p.m. UTC
First, rename $TAG to $COMMITTISH.  We already pass tags, branches (well, only
master) and full SHAs into this script.

Xen uses master for QEMU_UPSTREAM_REVISION, and has done for other trees too
in the path.  Apparently we've never specified a different branch, because the
git-clone rune only pulls in the master branch; it does not pull in diverging
branches.

Fix this by performing an explicit fetch of the $COMMITTISH, then checking out
the dummy branch from the FETCH_HEAD.

Suggested-by: Jason Andryuk <jason.andryuk@amd.com>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Julien Grall <julien@xen.org>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Jason Andryuk <jason.andryuk@amd.com>

A second attempt, given that c554ec124b12 ended up having to be reverted.

https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1683296906
---
 scripts/git-checkout.sh | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

Comments

Stefano Stabellini Feb. 22, 2025, 1:35 a.m. UTC | #1
On Fri, 21 Feb 2025, Andrew Cooper wrote:
> First, rename $TAG to $COMMITTISH.  We already pass tags, branches (well, only
> master) and full SHAs into this script.
> 
> Xen uses master for QEMU_UPSTREAM_REVISION, and has done for other trees too
> in the path.  Apparently we've never specified a different branch, because the
> git-clone rune only pulls in the master branch; it does not pull in diverging
> branches.
> 
> Fix this by performing an explicit fetch of the $COMMITTISH, then checking out
> the dummy branch from the FETCH_HEAD.
> 
> Suggested-by: Jason Andryuk <jason.andryuk@amd.com>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> CC: Anthony PERARD <anthony.perard@vates.tech>
> CC: Michal Orzel <michal.orzel@amd.com>
> CC: Jan Beulich <jbeulich@suse.com>
> CC: Julien Grall <julien@xen.org>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Jason Andryuk <jason.andryuk@amd.com>
> 
> A second attempt, given that c554ec124b12 ended up having to be reverted.
> 
> https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1683296906
> ---
>  scripts/git-checkout.sh | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/scripts/git-checkout.sh b/scripts/git-checkout.sh
> index fd4425ac4ee8..a22540a2a5bb 100755
> --- a/scripts/git-checkout.sh
> +++ b/scripts/git-checkout.sh
> @@ -1,12 +1,12 @@
>  #!/bin/sh
>  
>  if test $# -lt 3; then
> -	echo "Usage: $0 <tree> <tag> <dir>"
> +	echo "Usage: $0 <tree> <committish> <dir>"
>  	exit 1
>  fi
>  
>  TREE=$1
> -TAG=$2
> +COMMITTISH=$2
>  DIR=$3
>  
>  set -e
> @@ -15,10 +15,11 @@ if test \! -d $DIR-remote; then
>  	rm -rf $DIR-remote $DIR-remote.tmp
>  	mkdir -p $DIR-remote.tmp; rmdir $DIR-remote.tmp
>  	$GIT clone $TREE $DIR-remote.tmp
> -	if test "$TAG" ; then
> +	if test "$COMMITTISH" ; then
>  		cd $DIR-remote.tmp
> +		$GIT fetch origin $COMMITTISH
>  		$GIT branch -D dummy >/dev/null 2>&1 ||:
> -		$GIT checkout -b dummy $TAG
> +		$GIT checkout -b dummy FETCH_HEAD
>  		cd -
>  	fi
>  	mv $DIR-remote.tmp $DIR-remote
> -- 
> 2.39.5
>
diff mbox series

Patch

diff --git a/scripts/git-checkout.sh b/scripts/git-checkout.sh
index fd4425ac4ee8..a22540a2a5bb 100755
--- a/scripts/git-checkout.sh
+++ b/scripts/git-checkout.sh
@@ -1,12 +1,12 @@ 
 #!/bin/sh
 
 if test $# -lt 3; then
-	echo "Usage: $0 <tree> <tag> <dir>"
+	echo "Usage: $0 <tree> <committish> <dir>"
 	exit 1
 fi
 
 TREE=$1
-TAG=$2
+COMMITTISH=$2
 DIR=$3
 
 set -e
@@ -15,10 +15,11 @@  if test \! -d $DIR-remote; then
 	rm -rf $DIR-remote $DIR-remote.tmp
 	mkdir -p $DIR-remote.tmp; rmdir $DIR-remote.tmp
 	$GIT clone $TREE $DIR-remote.tmp
-	if test "$TAG" ; then
+	if test "$COMMITTISH" ; then
 		cd $DIR-remote.tmp
+		$GIT fetch origin $COMMITTISH
 		$GIT branch -D dummy >/dev/null 2>&1 ||:
-		$GIT checkout -b dummy $TAG
+		$GIT checkout -b dummy FETCH_HEAD
 		cd -
 	fi
 	mv $DIR-remote.tmp $DIR-remote