Git Filter-branch不会删除文件夹?

时间:2012-08-21 10:29:24

标签: shell git-svn git-rebase git-filter-branch unexpectendoffile

我想将我的大多数存储库从我自己的SVN服务器转换为托管的远程Git服务器。我找到了couple of commands并将它们转换为自动shell脚本,以便以更平滑的方式转换存储库。

无论如何,这一切都有效,但现在我得到unexpected EOF - 来自托管服务器的错误,每当我试图克隆git存储库来处理它时。一些大型存储库(2 - 10 Gigs)需要很长时间才能导入......

所以我尝试将filter-branch用于removing folders,以便通过删除最大的文件夹和图形源文件来减少存储库的大小。这一切都在我的计算机上工作,但是当我想上传到git-server时(在等待之后),我看到目录和文件仍在那里!

我已经尝试使用git repack来确保包也更小并将存储库克隆到新文件夹中,并且它适用于我的问题的缩小部分,但是当我继续使用{{ 1}}我收到的错误如下:

git branch -m trunk master

我在the following reply on a topic上解释了错误#3的新提交,但我没有任何进展......

我意识到错误都是连在一起的,但是我不明白为什么在(本地)克隆的存储库中没有主干,或者为什么当我只有一个1: error: refname refs/heads/trunk not found 2: fatal: Branch rename failed 3: error: src refspec master does not match any. 4: error: failed to push some refs to 'ssh://git@bitbucket.org/{username}/{projectname}' 时我突然有了几个分支 - 分支在另一个回购...

master

要想做很多尝试的长篇故事,请更短:

  
      
  1. 我为一个包含所有历史记录的新文件夹(* [new branch] origin/HEAD -> origin/HEAD * [new branch] origin/master -> origin/master git svn clone --no-metadata -A -stdLayout

         

    1b中。我删除了所有过时的文件夹和文件(按存储库定义)

  2.   
  3. projectname进入新的存储库(我们将其命名为git init
  4.   
  5. 我将所有内容都推送到我使用projectname-copy
  6. 创建的bare存储库中   
  7. 我尝试上传到托管服务器,但收到错误或没有更改
  8.   

现在我的问题是:有没有人有缩小存储库大小(本地和远程)的解决方案,并且可以将它们上传到我的git-server?

PS:我想你会知道写作命令行不是我的一杯茶,所以请不要拍我: - )

1 个答案:

答案 0 :(得分:1)

没关系,我自己解决了。

我做了一个本地克隆,做了一个git repack -A -d,接着是一个git gc --prune=now && git gc --prune=now --aggressive,然后我做了一个简单的回购。

我必须检查分支是否正确,如果不是我用git branch -m [branchname]制作它们然后我可以上传到我的主机。

以为我会和你们分享:-)