We migrated one of our repositories to git media, removing large binary files.
We assume the following:
* We are removing PDF and PNG here.
* New remote repos should be newly created.
* We use S3 for the storage.
Procedure
Create work branch for your safety.
% cd new-repos
% git checkout master
% git checkout -b work-filter-branch
Remove pdf and png from the working tree before enabling git-media.
% git filter-branch --index-filter \
'git rm -rf --ignore-unmatch **/*.{pdf,png}' \
-f --prune-empty HEAD
Enable filter on pdf and png in .gitattributes.
% $EDITOR .gitattributes
*.pdf filter=media -crlf
*.png filter=media -crlf
% git commit -m 'Configure .gitattributes for git-media' .gitattributes
Configure git-media.
% $EDITOR .git/config
% cat .git/config
...
[git-media]
transport = s3
s3user = johnd
s3bucket = foo
s3key = ...
s3secret = ...
[filter "media"]
clean = git-media filter-clean
smudge = git-media filter-smudge
Copy pdf and png from the backup.
% for f in ../old-repos/subdir/**/*.{pdf,png}; \
cp $f new-repos/subdir`echo $f | sed 's/^.*subdir//'`
Commit pdf and png we’ve copied.
% git commit -m 'Restore .pdf and .png files' subdir/**/*.{pdf,png}
If everything seems okay, do the same on master. Then change remote to the new repos and push.
% $EDITOR .git/config
...
% git push origin master
Before uploading files, run git media sync.
% git media sync
Other Articles
- 13 Oct 2017: 『テスト駆動開発』
- 19 Oct 2016: 『新装版 達人プログラマー 職人から名匠への道』
- 19 Aug 2016: 『プログラミングElixir』
- 20 Oct 2015: Migrating from git-media to git-lfs
- 04 Oct 2015: Git Large File Storageクライアントのインストール
- 12 Aug 2015: isbn.rb
- 22 Apr 2015: 「なるのか、なすのか?」(To Be Or To Do?)