[patch] CT_ExtractGit
Esben Haabendal
esben.haabendal@prevas.dk
Fri Oct 7 13:24:00 GMT 2011
Signed-off-by: "Esben Haabendal" <esben.haabendal@prevas.dk>
On Fri, 2011-10-07 at 15:15 +0200, Esben Haabendal wrote:
> # HG changeset patch
> # User Esben Haabendal <esben.haabendal@prevas.dk>
> # Date 1317992804 -7200
> # Node ID 34d13602e8cc46247f19a2c498df0cf060064d3d
> # Parent 7501f41e3bbfa01aea66d5a2ce2343f69306009f
> Fix CT_ExtractGit function.
>
> Change CT_ExtractGit so that it clones the repository, instead of just
> symlinking it. After cloning, any given ref is checked out, or if no
> ref is given, the HEAD of the repository is checked out.
>
> This makes CT_Extract behave similar for git repositories as it does
> for tarballs, so that it fx. can be used for passing glibc-ports as a
> git repository.
>
> diff -r 7501f41e3bbf -r 34d13602e8cc scripts/functions
> --- a/scripts/functions Thu Oct 06 00:09:00 2011 +0200
> +++ b/scripts/functions Fri Oct 07 15:06:44 2011 +0200
> @@ -787,12 +787,13 @@
> CT_Popd
> }
>
> -# Create a working git clone
> +# Create a working git clone of a local git repository
> # Usage: CT_ExtractGit <basename> [ref]
> # where 'ref' is the reference to use:
> # the full name of a branch, like "remotes/origin/branch_name"
> # a date as understandable by git, like "YYYY-MM-DD[ hh[:mm[:ss]]]"
> # a tag name
> +# If 'ref' is not given, the current repository HEAD will be used
> CT_ExtractGit() {
> local basename="${1}"
> local ref="${2}"
> @@ -800,13 +801,13 @@
> local ref_type
>
> # pushd now to be able to get git revlist in case ref is a date
> - clone_dir="${CT_TARBALLS_DIR}/${basename}"
> - CT_Pushd "${clone_dir}"
> + repo="${CT_TARBALLS_DIR}/${basename}"
> + CT_Pushd "${repo}"
>
> # What kind of reference is ${ref} ?
> if [ -z "${ref}" ]; then
> - # Don't update the clone, keep as-is
> - ref_type=none
> + ref_type=head
> + ref=$(git rev-list -n1 HEAD)
> elif git tag |grep -E "^${ref}$" >/dev/null 2>&1; then
> ref_type=tag
> elif git branch -a --no-color |grep -E "^. ${ref}$" >/dev/null
> 2>&1; then
> @@ -818,15 +819,17 @@
> CT_Abort "Reference '${ref}' is an incorrect git reference:
> neither tag, branch nor date"
> fi
>
> - CT_DoExecLog DEBUG rm -f "${CT_SRC_DIR}/${basename}"
> - CT_DoExecLog ALL ln -sf "${clone_dir}" "${CT_SRC_DIR}/${basename}"
> + CT_Popd
>
> + CT_DoExecLog FILE rmdir "${basename}"
> case "${ref_type}" in
> - none) ;;
> - *) CT_DoExecLog FILE git checkout "${ref}";;
> + branch) CT_DoExecLog FILE git clone -b "${ref}" "${repo}"
> "${basename}" ;;
> + *) CT_DoExecLog FILE git clone "${repo}" "${basename}"
> + CT_Pushd "${basename}"
> + CT_DoExecLog FILE git checkout "${ref}"
> + CT_Popd
> + ;;
> esac
> -
> - CT_Popd
> }
>
> # Patches the specified component
>
>
>
--
ESBEN HAABENDAL, Senior Software Designer
Prevas A/S, Hedeager 1, DK-8200 Aarhus N, www.prevas.dk
Central: +45 87 43 80 70 Direct: +45 51 92 53 93
E-mail: esben.haabendal@prevas.dk
--
For unsubscribe information see http://sourceware.org/lists.html#faq
More information about the crossgcc
mailing list