summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar tyger <tyger@web>2011-03-01 14:07:52 +0000
committerGravatar admin <admin@branchable.com>2011-03-01 14:07:52 +0000
commite2e4096a28042327ccb905b80ec0cbf550f88c61 (patch)
tree5614298a4bf6b9f7b7053521a7d20cd82cbcf19a
parent4cd96ad2db0867ef7450215d3de7afcf748d7088 (diff)
Added a comment
-rw-r--r--doc/forum/migrate_existing_git_repository_to_git-annex/comment_2_5f08da5e21c0b3b5a8d1e4408c0d6405._comment60
1 files changed, 60 insertions, 0 deletions
diff --git a/doc/forum/migrate_existing_git_repository_to_git-annex/comment_2_5f08da5e21c0b3b5a8d1e4408c0d6405._comment b/doc/forum/migrate_existing_git_repository_to_git-annex/comment_2_5f08da5e21c0b3b5a8d1e4408c0d6405._comment
new file mode 100644
index 000000000..71a40ad8c
--- /dev/null
+++ b/doc/forum/migrate_existing_git_repository_to_git-annex/comment_2_5f08da5e21c0b3b5a8d1e4408c0d6405._comment
@@ -0,0 +1,60 @@
+[[!comment format=mdwn
+ username="tyger"
+ ip="80.66.20.180"
+ subject="comment 2"
+ date="2011-03-01T14:07:50Z"
+ content="""
+My current workflow looks like this (I'm still experimenting):
+
+### Create backup clone for migration
+
+ git clone original migrate
+ cd migrate
+ for branch in $(git branch -a | grep remotes/origin | grep -v HEAD); do git checkout --track $branch; done
+
+### Inject git annex initialization at repository base
+
+ git symbolic-ref HEAD refs/heads/newroot
+ git rm --cached *.rpm
+ git clean -f -d
+ git annex init master
+ git cherry-pick $(git rev-list --reverse master | head -1)
+ git rebase --onto newroot newroot master
+ git rebase master mybranch # how to automate this for all branches?
+ git branch -d newroot
+
+### Start migration with tree filter
+
+ echo \*.rpm annex.backend=SHA1 > .git/info/attributes
+ MYWORKDIR=$(pwd) git filter-branch --tree-filter ' \
+ if [ ! -d .git-annex ]; then \
+ mkdir .git-annex; \
+ cp ${MYWORKDIR}/.git-annex/uuid.log .git-annex/; \
+ cp ${MYWORKDIR}/.gitattributes .; \
+ fi
+ 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/; \
+ fi; \
+ ln -sf ${annexdest#../../} $rpm; \
+ done; \
+ git reset HEAD .git-rewrite; \
+ : \
+ ' -- $(git branch | cut -c 3-)
+ rm -rf .temp
+ git reset --hard
+
+
+There are still some drawbacks:
+
+* git history shows that git annex log files are modified with each checkin
+* branches have to be rebased manually before starting migration
+
+
+"""]]