I will reply to this in detail later. I'm traveling and in meetings. But yes, 
extra files are preserved. 

Sent from my iPhone

> On Jul 16, 2014, at 9:19 AM, "Cooper Jr., Franklin" <[email protected]> wrote:
> 
> 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?
> 
> 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.
> 
>> -----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

Reply via email to