2016-07-14 140 views
2

我现有的Github回购臃肿的zip和tar.gz文件,因此我想将其迁移到新的 Git LFS启用的回购与现有Github回购分开测试,以便现有的Github回购是原封不动。我遇到了一个叫做bfg-repo-cleaner https://github.com/rtyley/bfg-repo-cleaner的美妙工具,看起来正是我所需要的!将现有Git回购迁移到新的Git LFS已启用回购

我编译了我认为我需要做的步骤,但是会喜欢第二双眼睛以确保这些步骤是正确的。

如果原来已有的回购是https://github.com/username/source.git和新目的地的Git LFS启用回购为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 

我错过了什么?它似乎推失败

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' 

此外,原始的github回购还为gitlab和bitbucket和备份位置添加了额外的遥控器。我相信bitbucket和gitlab都支持像github一样的Git LFS吗?

干杯

+1

BitBucket只支持自2016年7月18日起的LFS:http://stackoverflow.com/a/38450750/6309 – VonC

回答