3

My existing Github repo is getting bloated with zip and tar.gz files so I want to migrate it to a new Git LFS enabled repo that is separate from existing Github repo for testing so that existing Github repo is untouched. I came across a wonderful tool called bfg-repo-cleaner https://github.com/rtyley/bfg-repo-cleaner and looks like exactly what I need !

I compiled the steps I think I need to make, but would love a second pair of eyes to make sure these are the correct steps.

Where original existing repo is https://github.com/username/source.git and new destination Git LFS enabled repo is https://github.com/username/destination-lfs.git

pass=PERSONAL_ACCESS_TOKEN
ORIGINAL="https://github.com/username/source.git"
REPONAME_ORIGINAL='source.git'
NEW="https://username:"${pass}"@github.com/username/destination-lfs.git"
REPONAME_NEW='destination-lfs.git'

# setup local work space
mkdir -p /home/workgit
cd /home/workgit

# download bfg
wget -cnv http://repo1.maven.org/maven2/com/madgag/bfg/1.12.12/bfg-1.12.12.jar -O bfg.jar
alias bfg='/bin/java -jar bfg.jar'

# setup local git
git clone --mirror "$ORIGINAL" "$REPONAME_NEW"
cd $REPONAME_NEW
git count-objects -v
git remote rename origin upstream
git remote add origin $NEW
git remote -v
cd ../

time bfg --convert-to-git-lfs '*.{zip,gz,rpm,tgz,xz,bz2,rar,7z,pdf,eot,svg,ttf,woff,woff2}' --no-blob-protection $REPONAME_NEW

cd $REPONAME_NEW
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git count-objects -v
git lfs init
git push --dry-run -u origin master
git push -u origin master

Did I miss anything ? It seems the push failed too

git push --dry-run -u origin master                                        
Git LFS: (76 of 43 files) 799.22 MB / 1.43GB                                                                                                                                                                        
Authorization error: https://github-cloud.s3.amazonaws.com/xxxx/media/*****?actor_id=xxxxxx
Check that you have proper access to the repository
error: failed to push some refs to 'https://username:"${pass}"@github.com/username/destination-lfs.git'

Also the original github repo also has additional remotes added for gitlab and bitbucket and backup locations. I believe both bitbucket and gitlab support Git LFS like github does ?

Cheers

Yves M.
  • 29,855
  • 23
  • 108
  • 144
p4guru
  • 1,400
  • 2
  • 19
  • 25
  • 1
    BitBucket supports LFS only since July 2016, 18th: http://stackoverflow.com/a/38450750/6309 – VonC Jul 19 '16 at 06:14

1 Answers1

6

The Git LFS team currently recommends git-lfs-migrate as the preferred migration tool:

git-lfs-migrate is the preferred way now. You shouldn't be needing filter-branch anymore... I hope

javabrett
  • 7,020
  • 4
  • 51
  • 73