Repo - Apply

Posted by: GizmoMan in Articles

GizmoMan
Due to limitation of the google repo tool you need to manually apply a repo patch to the repo repository when porting android to other platforms. This script automates this process.
Use this script to automatically split the repo patch file in individual patch files and automatically apply them to the individual git repositories inside the repo repository. Usage: repo-apply The script will take the patch file and split the file into individual patch files for each git repository. Then the script will apply each individual patch file to the correct git repository using 'git apply'.

#!/bin/bash
# script to apply a patchfile to a repo repository
# author: lynx
# email: gizmo@neuronetix.de

if [ $# -ne 2 ]; then
echo "Usage: $(basename $0) <repoPatchFile> <repoPath>"
exit 1
fi

sPatchFile="$1"
sRepoPath="$2"

mkdir /tmp/.patches

nCnt=$(grep -c ^project $1)
nCnt=$(($nCnt - 1))
csplit -f /tmp/.patches/patch. $sPatchFile /^project/ {$nCnt}
for sPatch in /tmp/.patches/patch.*; do
    sPatchPath="$(cat $sPatch | grep "project" | grep -v grep)"
        if [ -n "$sPatchPath" ]; then
            sPatchPath="$(echo $sPatchPath | awk {'print $2'})"
        pushd "$sRepoPath/$sPatchPath"
                echo "Patching $sPatch in $sRepoPath/$sPatchPath"
        git apply --reject --whitespace=fix $sPatch
        echo "Patch End $sPatch"
                popd
        fi
    done

rm -rf /tmp/.patches
exit 0

You do not have the appropriate access to write comments. Please register to have access to this feature.