[Buildroot] [PATCH 3/4 v2] support/download/git: add support for submodules
Matthew Weber
matt at thewebers.ws
Sat Apr 2 05:02:15 UTC 2016
Yann,
On Fri, Apr 1, 2016 at 3:25 PM, Yann E. MORIN <yann.morin.1998 at free.fr> wrote:
> Some git repositories may be split into a master repository and
> submodules. Up until now, we did not have support for submodules,
> because we were using bare clones, in which it is not possible to
> update the list of submodules.
>
> Now that we are using plain clones with a working copy, we can retrieve
> the submdoules.
>
> Add an option to the git downlaod helper to kick the update of
> submodules, so that they are only fetched for those packages that
> require them. Also document the existing -q option at the same time.
>
> Submodules have a .git file at their root, which contains the path to
> the real .git directory of the master repository. Since we remove it,
> there is no point in keeping those .git files either.
>
> Note: this is currently unused, but will be enabled with the follow-up
> patch , that adds the necessary parts in the pkg-generic and pkg-download
> infrastructures.
>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
Tested-by: Matt Weber <matt at thewebers.ws>
Reviewed-by: Matt Weber <matt at thewebers.ws>
> ---
> support/download/git | 23 +++++++++++++++++------
> 1 file changed, 17 insertions(+), 6 deletions(-)
>
> diff --git a/support/download/git b/support/download/git
> index 5672217..99bd996 100755
> --- a/support/download/git
> +++ b/support/download/git
> @@ -6,15 +6,20 @@ set -e
> # Download helper for git, to be called from the download wrapper script
> #
> # Call it as:
> -# .../git [-q] OUT_FILE REPO_URL CSET BASENAME
> +# .../git [-q] [-r] OUT_FILE REPO_URL CSET BASENAME
> +#
> +# -q Be quiet.
> +# -r Clone and archive sub-modules.
> #
> # Environment:
> # GIT : the git command to call
>
> verbose=
> -while getopts :q OPT; do
> +recurse=0
> +while getopts :qr OPT; do
> case "${OPT}" in
> q) verbose=-q; exec >/dev/null;;
> + r) recurse=1;;
> \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;;
> esac
> done
> @@ -61,18 +66,24 @@ pushd "${basename}" >/dev/null
> # below, if there is an issue anyway. Since most of the cset we're gonna
> # have to clone are not such special refs, consign the output to oblivion
> # so as not to alarm unsuspecting users, but still trace it as a warning.
> -if ! _git fetch "'${cset}:${cset}'" >/dev/null 2>&1; then
> +if ! _git fetch origin "'${cset}'" >/dev/null 2>&1; then
> printf "Could not fetch special ref '%s'; assuming it is not special.\n" "${cset}"
> fi
>
> -# Checkout the required changeset.
> +# Checkout the required changeset, so that we can update the required
> +# submodules.
> _git checkout -q "'${cset}'"
>
> # Get date of commit to generate a reproducible archive.
> date="$( _git show --no-patch --pretty=format:%cD )"
>
> -# We do not need the .git dir to generate the tarball
> -rm -rf .git
> +# There might be submodules, so fetch them.
> +if [ ${recurse} -eq 1 ]; then
> + _git submodule update --init --recursive
> +fi
> +
> +# We do not need the .git dir and files to generate the tarball
> +find . \( -name .git -o -name .gitmodules \) -exec rm -rf {} +
>
> popd >/dev/null
>
> --
> 1.9.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
Thanks,
Matt
More information about the buildroot
mailing list