This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] CT_ExtractGit


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]