>-----Original Message-----
>From: Cooper Jr., Franklin
>Sent: Wednesday, July 16, 2014 9:19 AM
>To: Maupin, Chase; [email protected]
>Subject: RE: [meta-arago] [PATCH 1/4] sourceipk: allow packaging
>shallow git clone
>
>What branch/commit is checked out by default when a user uses this
>shallow cloned git repository?
>Also since your manually cloning this repository what happens to
>patches that OE applies to the git repository or files that are
>manually copied?
Default is that the ${BRANCH} is checked out at the ${SRCREV}.
The copied files like the config are still maintained because we replace the
git data in the original sourceipk directory rather than doing a whole new
copy. So if the files were there before they are still there vs. doing a new
checkout where they would be lost.
>
>I'm not sure if it is possible but it is probably safer to reuse
>the git repository as is from sourceipk and see if we can make
>that git repository shallow so we can preserve any changes to the
>repo.
I had not found a way to take an existing repo and turn it into a shallow
clone. That is why I make the shallow clone separate and then replace the git
repo with the shallow clone data.
>
>> -----Original Message-----
>> From: [email protected] [mailto:meta-arago-
>> [email protected]] On Behalf Of Maupin, Chase
>> Sent: Tuesday, July 15, 2014 6:29 AM
>> To: [email protected]
>> Subject: [meta-arago] [PATCH 1/4] sourceipk: allow packaging
>shallow git
>> clone
>>
>> * Add another flag SRCIPK_SHALLOW_CLONE that will do a shallow
>> clone of depth 1 to reduce the size of the git history.
>> * The full history can be fetched again using either of the
>> following commands based on the version of git being used
>> - git pull --unshallow (New git versions)
>> - git pull (older git versions)
>> * Clean up some of the variable names to make it more clear what
>> they are storing.
>> * Create a generic function to determine the fetch reporitory
>>
>> Signed-off-by: Chase Maupin <[email protected]>
>> ---
>> meta-arago-distro/classes/sourceipk.bbclass | 100
>> ++++++++++++++++++++++++---
>> 1 file changed, 89 insertions(+), 11 deletions(-)
>>
>> diff --git a/meta-arago-distro/classes/sourceipk.bbclass b/meta-
>arago-
>> distro/classes/sourceipk.bbclass
>> index 20dda76..33878ac 100644
>> --- a/meta-arago-distro/classes/sourceipk.bbclass
>> +++ b/meta-arago-distro/classes/sourceipk.bbclass
>> @@ -61,32 +61,111 @@ SRCIPK_INCLUDE_EXTRAFILES ?= "1"
>>
>> SRCIPK_PRESERVE_GIT ?= "false"
>>
>> -adjust_git() {
>> +# Create a shallow clone of the git repository to reduce the
>size of #
>> +the sourceipk SRCIPK_SHALLOW_CLONE ?= "false"
>> +
>> +# This function will return the fetch URL for a git repository
>passed
>> +as # the first parameter.
>> +get_remote() {
>> + git_repo="$1"
>> +
>> + if [ "$git_repo" == "" ]
>> + then
>> + echo "git_repo not passed to get_remote"
>> + exit 1
>> + fi
>> +
>> + cd $git_repo
>> +
>> + # Get the remote repository fetch URL
>> + remote=`git remote -v | grep "(fetch)" | cut -d ' ' -f 1
>| cut -c 7- | tr -d ' '`
>> +
>> + # Since the echo'ed value of this statment is the returned
>value redirect
>> + # the output of this command to /dev/null
>> + cd - > /dev/null
>> +
>> + # echo back the remote repository URL as the output of this
>function
>> + echo $remote
>> +
>> + return 0
>> +}
>> +
>> +# Some git repositories are very large and we do not want to
>ship the #
>> +full history. Instead we want to limit history to reduce the
>size
>> +while # still keeping the git repository in place. The full
>history
>> +can be # fetched using git pull --unshallow or just git pull #
>NOTE:
>> +This function depends on a git version >= 1.7.10. It will work
>> +# with older versions but the size will be larger because
>rather
>> +# than just a single branch the limited history will be a
>depth of
>> +# 1 for all branches and tags.
>> +limit_git_history() {
>> + # By default limit the history to 1 commit since the user
>can always
>> + # use git pull --unshallow to fetch the rest of history.
>The depth
>> + # level of 1 is set to keep from tracking through all
>merges and
>> + # pulling excess history
>> + commits="1"
>> +
>> + # Temporary directory to make shallow clones in
>> + gitshallowclone="${WORKDIR}/temp-git-shallow-clone"
>> +
>> + # Change directory to the git repository to be safe
>> + cd $tmp_dir/${SRCIPK_INSTALL_DIR}
>> +
>> + # Create a temporary directory to hold the shallow git
>clone
>> + mkdir -p $gitshallowclone
>>
>> + remote=`get_remote $PWD`
>> +
>> + git clone --depth $commits --branch ${BRANCH}
>file://$remote
>> + $gitshallowclone
>> +
>> + # remove original kernel clone since we will replace it
>with the shallow
>> + # clone
>> + rm -rf $tmp_dir/${SRCIPK_INSTALL_DIR}/.git
>> +
>> + # replace the original kernel git data with the shallow
>clone git data
>> + mv $gitshallowclone/.git $tmp_dir/${SRCIPK_INSTALL_DIR}/
>> + rm -rf $gitshallowclone
>> +
>> + cd -
>> +}
>> +
>> +adjust_git() {
>> orig_dir="$PWD"
>>
>> cd $tmp_dir/${SRCIPK_INSTALL_DIR}
>>
>> if [ -d ".git" ]
>> then
>> + # Get the location of the local repository
>> + local_repo=`get_remote $PWD`
>>
>> - # Grab path to cloned local repository
>> - old=`git remote -v | grep "(fetch)" | cut -d ' ' -f 1
>| cut -c 7- | tr -d ' '`
>> -
>> - if [ -d $old -a "${SRCIPK_PRESERVE_GIT}" = "true" ]
>> + if [ -d $local_repo -a "${SRCIPK_PRESERVE_GIT}" =
>"true" ]
>> then
>> - cd $old
>> + cd $local_repo
>> +
>> + # If SRCIPK_SHALLOW_CLONE is true then make a
>shallow copy of the
>> + # git repository and then fix up the git URLs
>> + if [ "${SRCIPK_SHALLOW_CLONE}" == "true" ]
>> + then
>> + limit_git_history
>> + fi
>>
>> # Grab actual url used to create the repository
>> - orig=`git remote -v | grep "(fetch)" | cut -d ' ' -
>f 1 | cut -c 7- | tr -d ' '`
>> + remote_repo=`get_remote $PWD`
>>
>> cd -
>>
>> - git remote set-url origin $orig $old
>> + git remote set-url origin $remote_repo $local_repo
>>
>> - # Repackage the repository so its a proper clone of
>the original
>> (remote) git repository
>> + # Repackage the repository so its a proper clone of
>the original
>> + # (remote) git repository
>> git repack -a -d
>> - rm .git/objects/info/alternates
>> +
>> + if [ -e .git/objects/info/alternates ]
>> + then
>> + rm .git/objects/info/alternates
>> + fi
>>
>> else
>> rm -rf .git
>> @@ -95,7 +174,6 @@ adjust_git() {
>> fi
>>
>> cd $orig_dir
>> -
>> }
>>
>> # Create a README file that describes the contents of the
>source ipk
>> --
>> 1.7.9.5
>>
>> _______________________________________________
>> meta-arago mailing list
>> [email protected]
>> http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago
_______________________________________________
meta-arago mailing list
[email protected]
http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago