2012-08-24 156 views
3

我正在将svn repo转换为git repo,并且我们有多年来不应该检查的二进制文件,以及图像和其他文件,我真的不希望这些文件出现在git仓库中占用空间。git svn忽略路径使用忽略文件

我与混帐SVN发挥各地的回购转换,并利用其-ignorepaths财产,但我希望能够养活一个列表到忽略路径,而不是为每个模式指定ignorepaths /目录我想排除,如果我可以在转换过程中使用svnignore/gitignore文件来取代这个更好的垃圾。

有没有办法做到这一点,或者我只需要点击子弹并单独指定每个模式/路径?

编辑:更新的问题,要以更清楚我是问

+0

不* .DLL工作之前? –

+0

它可能不会,但我真的只是使用作为一个例子,我想有扩展/路径的整个堆容易 –

+0

我想有没有简单的方法了这个 - 你必须列出要忽略了什么 - 要么但创意正则表达式,或只是将它们全部列出 –

回答

2

Subversion是一个有点复杂那里,如果你已经习惯了的Git。 svn:ignore是以每个文件夹为基础工作的属性。在特定的文件夹中,您只能忽略特定文件或直接子文件夹。 您可以将文件传递给设置忽略目录的属性,你也可以在.gitignore文件以传递给它用命令:

svn propset svn:ignore -F .gitignore DIRECTORY 

但对于上面提到的原因,真正实用的部分中的.gitignore像*/build在Subversion中不会有效果。

你可以做的唯一的事情就是使用--depth参数svn propset例如,如果你通过--depth immediates,它将设置DIRECTORY和每个子文件夹的属性。还有一些方法可以指定深度,或者只是使其深入 - 我认为TAB完成可以在那里工作,或者查看帮助。

还有一个很大的缺点,但:每次你添加一个包含你想忽略文件的文件夹,你将不得不再次运行svn propset命令。

+0

不幸的是我不认为这就是我要找的,我想一个svn回购转换为混帐回购协议,并采取了一些在前进的道路上增加了污物的仿佛什么都没有发生 –

0

如果你要转换的svn:忽略到的.gitignore或反之亦然,你可以使用SubGit而不是混帐SVN,它会自动执行这种转换。在最简单的配置转换命令如下:

$ subgit install path/to/svn/repository 
+0

那不是真的是我要找的,我想创建使用gitignore过滤掉文件的Git仓库而创建回购 –

+0

gitignore没有任何关系,你的问题是误导位。要过滤的文件,你可以使用“svnadmin的转储” +过滤流/ svndumptool +“的svnadmin负荷”或由我一个工具--- svnkitfilter(你可以修补它来过滤任何你想要的)---过滤在SVN边的东西,“ git filter-branch“来过滤Git端或--ignore-paths选项git-svn –

+0

是的,我正在寻找一种方法来为git-svn提供一个ignore-path选项列表,而不是单独列出每个选项基本上可以达到同样的效果 –

0

我可以证实,git svn采取的从Subversion获取的情况下,中.gitignore内容的任何通知,不管.gitignore是否已经检查到回购。

解决办法是,在你的问题说,就是用--ignore-pathsgit svn clone。完成此操作后,它将被添加到.git/config文件中,因此您不必在每次获取内容时都指定它。

将现有.gitignore文件转换成一个Perl的正则表达式与--ignore-paths使用并不复杂,因为既然你可以方面共同它看起来。

例如:

/[Dd]ebug/|^rootfile.txt$|\.bak$ 

排除debug文件夹路径中的任何地方,具体的文件rootfile.txt在回购协议的根源,以及所有*.bak文件。

提示:

  • 以正斜杠结束将排除命名的文件夹的内容,但没有文件夹本身
  • ^表达式从根别仓库和路径的根相匹配牛逼开始以斜线
  • 如果需要的话,你可以使用lookaround expressions in the regexes,如排除所有Bin文件夹除非它们是由一些特定的目录