Found temporary solution
This commit is contained in:
parent
1c08b8bf8a
commit
af6a7c4b81
1 changed files with 56 additions and 0 deletions
|
@ -6,3 +6,59 @@ I tried to rewrite the (cloned) repository with git-filter-branch but failed mis
|
||||||
* annex log files are stored in .git-annex/ instead of .git-rewrite/t/.git-annex/ so the filter operation misses them
|
* annex log files are stored in .git-annex/ instead of .git-rewrite/t/.git-annex/ so the filter operation misses them
|
||||||
|
|
||||||
Any suggestions how to proceed?
|
Any suggestions how to proceed?
|
||||||
|
|
||||||
|
EDIT 3/2/2010
|
||||||
|
I finally got it working for my purposes. Hardest part was preserving the branches while injecting the new `git annex setup` base commit.
|
||||||
|
|
||||||
|
#### Clone repository
|
||||||
|
git clone original migrate
|
||||||
|
cd migrate
|
||||||
|
git checkout mybranch
|
||||||
|
git checkout master
|
||||||
|
git remote rm origin
|
||||||
|
|
||||||
|
#### Inject `git annex setup` base commit and repair branches
|
||||||
|
git symbolic-ref HEAD refs/heads/newroot
|
||||||
|
git rm --cached *
|
||||||
|
git clean -f -d
|
||||||
|
git annex init master
|
||||||
|
echo \*.rpm annex.backend=SHA1 >> .gitattributes
|
||||||
|
git commit -m "store rpms in git annex" .gitattributes
|
||||||
|
git cherry-pick $(git rev-list --reverse master | head -1)
|
||||||
|
git rebase --onto newroot newroot master
|
||||||
|
git rebase --onto master mybranch~1 mybranch
|
||||||
|
git branch -d newroot
|
||||||
|
|
||||||
|
#### Migrate repository
|
||||||
|
mkdir .temp
|
||||||
|
cp .git-annex/* .temp/
|
||||||
|
MYWORKDIR=$(pwd) git filter-branch --tree-filter '
|
||||||
|
mkdir -p .git-annex;
|
||||||
|
cp ${MYWORKDIR}/.temp/* .git-annex/;
|
||||||
|
for rpm in $(git ls-files | grep "\.rpm$"); do
|
||||||
|
echo;
|
||||||
|
git annex add $rpm;
|
||||||
|
annexdest=$(readlink $rpm);
|
||||||
|
if [ -e .git-annex/$(basename $annexdest).log ]; then
|
||||||
|
echo "FOUND $(basename $annexdest).log";
|
||||||
|
else
|
||||||
|
echo "COPY $(basename $annexdest).log";
|
||||||
|
cp ${MYWORKDIR}/.git-annex/$(basename $annexdest).log .git-annex/;
|
||||||
|
cp ${MYWORKDIR}/.git-annex/$(basename $annexdest).log ${MYWORKDIR}/.temp/;
|
||||||
|
fi;
|
||||||
|
ln -sf ${annexdest#../../} $rpm;
|
||||||
|
done;
|
||||||
|
git reset HEAD .git-rewrite;
|
||||||
|
:
|
||||||
|
' -- $(git branch | cut -c 3-)
|
||||||
|
rm -rf .temp
|
||||||
|
git reset --hard
|
||||||
|
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
|
||||||
|
* Find a way to repair branches automatically (detect branch points and run appropriate `git rebase` commands)
|
||||||
|
|
||||||
|
I'll be happy to try any suggestions to improve this migration script.
|
||||||
|
|
||||||
|
P.S. Is there a way to edit comments?
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue