Skip to content

Instantly share code, notes, and snippets.

@robstryker
Created January 25, 2018 18:20
Show Gist options
  • Save robstryker/45472a533e887949e638cb34a80d37ed to your computer and use it in GitHub Desktop.
Save robstryker/45472a533e887949e638cb34a80d37ed to your computer and use it in GitHub Desktop.
#!/bin/bash -xe
# see also https://gist.github.com/nickboldt/6afc71826e82518c5e7b7d3c3fdcc4f3
# merge sse repos into a single repo
START_TIME=`date +%s`
# work in a tempdir. The tmp-dir name is something like /home/user/tmp/this_scripts_name/
tmpdir=~/tmp/${0/.sh/.tmp}
tmpdirCache=~/tmp/${0/.sh/.tmp}_cache
#rm -fr ${tmpdir}
mkdir -p ${tmpdir}
cd ${tmpdir}
# in case we have another alias for mv, like 'mv -i'
alias mv=mv
alias rm=rm
# set our local pull command depending on git version
verlte() {
[ "$1" = "`echo -e "$1\n$2" | sort -V | head -n1`" ]
}
verlt() {
[ "$1" = "$2" ] && return 1 || verlte $1 $2
}
GIT_VERSION=`git version | head -1 | cut -f 3 -d " "`
verlte $GIT_VERSION 2.9.0 && ALLOW_PULL_FLAG=false || ALLOW_PULL_FLAG=true
if $ALLOW_PULL_FLAG
then
LOCAL_PULL_CMD="git pull --no-edit --allow-unrelated-histories --no-rebase --rebase=false"
else
LOCAL_PULL_CMD="git pull --no-edit --no-rebase --rebase=false"
fi
MVN="mvn clean install -fae -e -Dplatform-repo.url=http://download.eclipse.org/eclipse/updates/4.8-I-builds/"
# Make sure different users with different settings will run the script as intended
gitBranchSettings ()
{
git config branch.autosetuprebase never
git config branch.autosetupmerge false
git config branch.master.rebase false
}
# handle changes to parent pom
if [[ ! -d webtools.releng.aggregator ]]; then git clone http://git.eclipse.org/gitroot/webtools/webtools.releng.aggregator.git; fi
pushd webtools.releng.aggregator/wtp-parent
gitBranchSettings
git reset --hard origin/master
${MVN}
popd
#git clone http://git.eclipse.org/gitroot/webservices/webtools.webservices.git
# Use my branch for now TODO !!!
git clone git@github.com:robstryker/webtools.webservices.git
git clone http://git.eclipse.org/gitroot/webservices/webtools.webservices.jaxws.git
git clone http://git.eclipse.org/gitroot/webservices/webtools.webservices.axis2.git
# Make all history of axis2 appear as if it was in a subfolder named 'axis2'
cd webtools.webservices.axis2
git filter-branch --tree-filter "mkdir axis2; mv axis2 ../tmp; mv * ../tmp/axis2; mv ../tmp/axis2 ./axis2" HEAD
rm .project .gitignore
git commit -a -m "Removing files likely to clash on merge" --signoff
cd ../
# Make all history of jaxws appear as if it was in a subfolder named 'jaxws'
cd webtools.webservices.jaxws/
git filter-branch --tree-filter "mkdir jaxws; mv jaxws ../tmp; mv * ../tmp/jaxws; mv ../tmp/jaxws ./jaxws" HEAD
rm .project .gitignore
git commit -a -m "Removing files likely to clash on merge" --signoff
cd ../
cd webtools.webservices
# Merge the 3 repos into one
$LOCAL_PULL_CMD ../webtools.webservices.jaxws
$LOCAL_PULL_CMD ../webtools.webservices.axis2
# Move all the original ws folders into a new folder named core
mkdir core
git mv bundles core/bundles
git mv docs core/docs
git mv features core/features
git mv tests core/tests
git commit -a -m "Move all files into core subdirectory" --signoff
# Change the root pom to just have 4 modules: core jaxws axis2 and site
cat pom.xml | head -n 94 > pom2.xml
echo " <module>core</module>" >> pom2.xml
echo " <module>jaxws</module>" >> pom2.xml
echo " <module>axis2</module>" >> pom2.xml
cat pom.xml | tail -n 4 >> pom2.xml
mv pom.xml core/pom.xml
mv pom2.xml pom.xml
# Change the root pom's name to webservices.parent
cat pom.xml | sed 's/org.eclipse.webtools.webservices<\/artifactId>/org.eclipse.webtools.webservices.parent<\/artifactId>/g' > pom2.xml
mv pom2.xml pom.xml
# Remove all the 'repository' stuff and plugins in core/pom.xml
cd core
cat pom.xml | head -n 34 > pom2.xml
cat pom.xml | tail -n 75 >> pom2.xml
# Change the parent reference in core/pom.xml
cat pom2.xml | sed 's/groupId>org.eclipse</groupId>org.eclipse.webtools.webservices</g' | sed 's/artifactId>wtp-parent</artifactId>org.eclipse.webtools.webservices.parent</g' | grep -v "relativePath" | grep -v "site<" > pom3.xml
mv pom3.xml pom.xml
rm pom2.xml
cd ../
# Change the parent reference in axis2/pom.xml
cd axis2
cat pom.xml | sed 's/groupId>org.eclipse</groupId>org.eclipse.webtools.webservices</g' | sed 's/artifactId>wtp-parent</artifactId>org.eclipse.webtools.webservices.parent</g' | grep -v "relativePath" > pom2.xml
mv pom2.xml pom.xml
cd ../
# Change the parent reference in jaxws/pom.xml
cd jaxws
cat pom.xml | sed 's/groupId>org.eclipse</groupId>org.eclipse.webtools.webservices</g' | sed 's/artifactId>wtp-parent</artifactId>org.eclipse.webtools.webservices.parent</g' | grep -v "relativePath" > pom2.xml
mv pom2.xml pom.xml
cd ../
# Change the parent reference in site/pom.xml
cd site
cat pom.xml | sed 's/groupId>org.eclipse</groupId>org.eclipse.webtools.webservices</g' | sed 's/artifactId>wtp-parent</artifactId>org.eclipse.webtools.webservices.parent</g' | grep -v "relativePath" > pom2.xml
mv pom2.xml pom.xml
cat <<EOT >> test.txt
<?xml version="1.0" encoding="UTF-8"?>
<site>
<feature id="org.eclipse.wst.ws_wsdl15.feature"><category name="webservices"/></feature>
<feature id="org.eclipse.wst.ws_ui.feature"><category name="webservices"/></feature>
<feature id="org.eclipse.wst.ws_core.feature"><category name="webservices"/></feature>
<feature id="org.eclipse.wst.ws_sdk.feature"><category name="webservices-sdk"/></feature>
<feature id="org.eclipse.wst.ws_userdoc.feature"><category name="webservices-sdk"/></feature>
<bundle id="org.eclipse.jst.ws.axis.infopop"><category name="webservices-sdk"/></bundle>
<bundle id="org.eclipse.jst.ws.consumption.infopop"><category name="webservices-sdk"/></bundle>
<bundle id="org.eclipse.jst.ws.infopop"><category name="webservices-sdk"/></bundle>
<bundle id="org.eclipse.wst.command.env.infopop"><category name="webservices-sdk"/></bundle>
<bundle id="org.eclipse.wst.ws.infopop"><category name="webservices-sdk"/></bundle>
<feature id="org.eclipse.wst.ws_tests.feature"><category name="webservices-tests"/></feature>
<feature id="org.eclipse.jst.ws.axis2tools.feature"><category name="webservices"/></feature>
<feature id="org.eclipse.jst.ws.axis2tools_sdk.feature"><category name="webservices-sdk"/></feature>
<feature id="org.eclipse.jst.ws.cxf.feature"><category name="webservices"/></feature>
<feature id="org.eclipse.jst.ws.cxf_sdk.feature"><category name="webservices-sdk"/></feature>
<feature id="org.eclipse.jst.ws.cxf_tests.feature"><category name="webservices-tests"/></feature>
<feature id="org.eclipse.jst.ws.jaxws.assembly.feature"><category name="webservices"/></feature>
<feature id="org.eclipse.jst.ws.jaxws.assembly_sdk.feature"><category name="webservices-sdk"/></feature>
<feature id="org.eclipse.jst.ws.jaxws.assembly_tests.feature"><category name="webservices-tests"/></feature>
<feature id="org.eclipse.jst.ws.jaxws.dom.feature"><category name="webservices"/></feature>
<feature id="org.eclipse.jst.ws.jaxws.dom_sdk.feature"><category name="webservices-sdk"/></feature>
<feature id="org.eclipse.jst.ws.jaxws.dom_tests.feature"><category name="webservices-tests"/></feature>
<feature id="org.eclipse.jst.ws.jaxws.feature"><category name="webservices"/></feature>
<feature id="org.eclipse.jst.ws.jaxws_sdk.feature"><category name="webservices-sdk"/></feature>
<feature id="org.eclipse.jst.ws.jaxws_tests.feature"><category name="webservices-tests"/></feature>
<feature id="org.eclipse.jst.ws.jaxws_userdoc.feature"><category name="webservices"/></feature>
<!-- javaee-web features -->
<feature id="org.eclipse.jst.doc.user.feature"><category name="javaee-web"/></feature>
<feature id="org.eclipse.jst.enterprise_core.feature"><category name="javaee-web"/></feature>
<feature id="org.eclipse.jst.enterprise_sdk.feature"><category name="javaee-web"/></feature>
<feature id="org.eclipse.jst.enterprise_tests.feature"><category name="javaee-web"/></feature>
<feature id="org.eclipse.jst.enterprise_ui.feature"><category name="javaee-web"/></feature>
<feature id="org.eclipse.jst.enterprise_userdoc.feature"><category name="javaee-web"/></feature>
<feature id="org.eclipse.jst.web_core.feature"><category name="javaee-web"/></feature>
<feature id="org.eclipse.jst.web_sdk.feature"><category name="javaee-web"/></feature>
<feature id="org.eclipse.jst.web_tests.feature"><category name="javaee-web"/></feature>
<feature id="org.eclipse.jst.web_ui.feature"><category name="javaee-web"/></feature>
<feature id="org.eclipse.jst.web_userdoc.feature"><category name="javaee-web"/></feature>
<category-def name="webservices" label="WTP Web Services"/>
<category-def name="webservices-sdk" label="WTP Web Services SDK"/>
<category-def name="webservices-tests" label="WTP Web Services Tests"/>
<category-def name="javaee-web" label="WTP Web Services - JavaEE Enterprise / Web Features"/>
</site>
EOT
mv test.txt category.xml
cd ../
git commit -a -m "Fix all poms.xml" --signoff
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment