# attempt to merge eclipse.platform.ui.compat into eclipse.platform.ui
# grafting the first fork_workbench commit onto its branch point 
# off of 3.6M3 and then merging it into the 4.2 master.

Some starting repos ... the rest will have to be fixed to reflect this:
git clone ssh://pwebster@git.eclipse.org/gitroot/platform/eclipse.platform.ui.git graft.ui.workbench



# First we need to cleanse common branches and tags between ui and compat

cd eclipse.platform.ui
git tag | sort -u >../tags_ui.txt
git branch -r | sort -u >../branch_ui.txt
cd ../eclipse.platform.ui.compat/
git tag | sort -u >../tags_compat.txt
git branch -r | sort -u >../branch_compat.txt
cd ..
comm -12 tags_ui.txt  tags_compat.txt >compat_tags.txt
comm -12 branch_ui.txt branch_compat.txt >compat_branches.txt

#Clean up the tags out of the eclipse.platform.ui.compat repo
#Probably branches as well.

==== got this far ====

cd eclipse.platform.ui
for f in $( cat ../common_tags.txt ) ; do git tag ${f}_R3 ${f}; git tag -d $f ; git push origin :$f ; done

# pull in the e4 ui stuff and add the merge node.
#

git remote add compat ssh://pwebster@git.eclipse.org/gitroot/e4/eclipse.platform.ui.compat.git
git fetch compat master:wb_fork



# Replicate all of the branches so that you can create a useful repo
git branch -r >../br.txt
# remove e4/master and origin/master from the file, then
for f in $( cat ../br.txt ); do BR=$( echo $f | sed 's/^.*\///g' ); git branch -t $BR $f ; done

# Then since master now points to the last commit in e4, 
# the push will push everything back to the main repo
# except we can't push any of our franken-repos, because of the commit hooks
#git push --all origin
#git push --tags origin

# so we'll do it the bad way

  cd ..
  git clone --bare eclipse.platform.ui eclipse.platform.ui.git
  cd eclipse.platform.ui.git
  git remote rm origin
# check that it is shared
  git config -l
  git config --add core.sharedrepository 1
  
# copy it to git root, from my local machine
scp -r * pwebster@dev.eclipse.org:/gitroot/platform/eclipse.platform.ui.git


  