mirror of
https://github.com/Alfresco/acs-community-packaging.git
synced 2025-09-10 14:12:09 +00:00
170 lines
5.7 KiB
Bash
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 |