Files
acs-community-packaging/dev/cherry-pick-old-projects-setup.sh

170 lines
5.7 KiB
Bash

#!/bin/bash -ex
# Script: cherry-pick-old-projects-setup.sh
#
# ***********************************************************************************************************
# ***** BEFORE RUNNING, edit the calls to setupRemotes (approx line 100) to specify the source branch ******
# ***** (2nd arg) to be checked out. ******
# ***********************************************************************************************************
#
# Clones and moves files in local copies of the the original repository projects to make it easier to cherry
# pick commits into alfresco-community-repo and alfresco-enterprise-repo. Run from a folder that contains
# alfresco-enterprise-repo and alfresco-enterprise-repo projects. The clones of the original projects are
# placed in a folder called oldRepos. Once run these projects will be set up as remotes to the new projects
# ready to allow cherry picking of commits.
if [[ ! -d alfresco-community-repo || ! -d alfresco-enterprise-repo ]]
then
echo "Script MUST be run in the parent folder of alfresco-community-repo and alfresco-enterprise-repo"
exit 1
fi
baseDir=`pwd`
oldReposDirName=oldRepos
oldReposDir=$baseDir/$oldReposDirName
mkdir -p $oldReposDir
#
# Moves the contents of the current folder to a new sub folder.
#
moveContent()
{
oldFolder=$1
newModule=$2
mkdir -p ${newModule}/$oldFolder
for file in `ls -a $oldFolder`
do
if [[ $file != ".git" && $file != ".." && $file != "." && $file != ".tmp" && $file != "${newModule}" ]]
then
git mv $oldFolder/$file ${newModule}/$oldFolder
fi
done
git commit -a -m "Moved content to new ${newModule} module" | grep -v "rename "
}
mvCommit()
{
from=$1
to=$2
echo git mv $from $to
git mv $from $to
if [[ -z "$(ls -A .tmp)" ]]
then
rmdir .tmp
fi
git commit -a -m "Moved $from to $to" | grep -v "rename "
}
#
# Moves all the root folder contents of a branch to a named folder in the root folder.
#
setupRemotes()
{
oldRepo=$1
oldBranch=$2
newRepo=$3
newModule=$4
echo
echo
cd $oldReposDir
rm -rf $oldRepo
git clone --single-branch --branch $oldBranch git@github.com:Alfresco/${oldRepo}.git
cd $oldRepo
count=`find . -type f | grep -v '^\.\/.git\/' | wc -l`
echo Move $count files in $oldRepo
# As the alfresco-repository src folder has so many files, the git mv and git commit commands fail,
# so let's do it in several parts
if [[ "$oldRepo" = "alfresco-repository" ]]
then
mkdir .tmp
mvCommit src/main/java/org/alfresco/repo .tmp/repo
mvCommit src/main/resources .tmp/resources
moveContent . $newModule
mvCommit .tmp/repo ${newModule}/src/main/java/org/alfresco/repo
mvCommit .tmp/resources ${newModule}/src/main/resources
else
moveContent . $newModule
fi
}
# source project branch target project module
setupRemotes alfresco-core master alfresco-community-repo core
setupRemotes alfresco-data-model master alfresco-community-repo data-model
setupRemotes alfresco-repository master alfresco-community-repo repository
setupRemotes alfresco-remote-api master alfresco-community-repo remote-api
setupRemotes acs-community-packaging develop alfresco-community-repo packaging
setupRemotes alfresco-enterprise-repository master alfresco-enterprise-repo repository
setupRemotes alfresco-enterprise-remote-api master alfresco-enterprise-repo remote-api
setupRemotes acs-packaging master alfresco-enterprise-repo packaging
#
# Add remotes and fetch original projects
#
echo
echo
cd $baseDir
cd alfresco-community-repo
git remote add alfresco-core ../$oldReposDirName/alfresco-core
git remote add alfresco-data-model ../$oldReposDirName/alfresco-data-model
git remote add alfresco-repository ../$oldReposDirName/alfresco-repository
git remote add alfresco-remote-api ../$oldReposDirName/alfresco-remote-api
git remote add acs-community-packaging ../$oldReposDirName/acs-community-packaging
git config merge.renameLimit 999999
git fetch alfresco-core | grep -v 'new tag]'
git fetch alfresco-data-model | grep -v 'new tag]'
git fetch alfresco-repository | grep -v 'new tag]'
git fetch alfresco-remote-api | grep -v 'new tag]'
git fetch acs-community-packaging | grep -v 'new tag]'
cd ..
cd alfresco-enterprise-repo
git remote add alfresco-enterprise-repository ../$oldReposDirName/alfresco-enterprise-repository
git remote add alfresco-enterprise-remote-api ../$oldReposDirName/alfresco-enterprise-remote-api
git remote add acs-packaging ../$oldReposDirName/acs-packaging
git config merge.renameLimit 999999
git fetch alfresco-enterprise-repository | grep -v 'new tag]'
git fetch alfresco-enterprise-remote-api | grep -v 'new tag]'
git fetch acs-packaging | grep -v 'new tag]'
cd ..
#
# remote remove repositories
#
echo You may now cherry pick to alfresco-community-repo and alfresco-enterprise-repo
echo after you press RETURN the remotes will be removed.
read DONE
cd alfresco-community-repo
git remote remove alfresco-core
git remote remove alfresco-data-model
git remote remove alfresco-repository
git remote remove alfresco-remote-api
git remote remove acs-community-packaging
git config --unset merge.renameLimit
cd ..
cd alfresco-enterprise-repo
git remote remove alfresco-enterprise-repository
git remote remove alfresco-enterprise-remote-api
git remote remove acs-packaging
git config --unset merge.renameLimit
cd ..
rm -rf $oldReposDir