Git:克隆后缺少子目录

混淆

我们正在为版本控制系统切换到git的过程。我使用“ git svn”将当前的svn存储库“ bigproject”克隆到git存储库-我还设置了一个cron来将svn提交同步到此git存储库。

“ bigproject”没有定义的外部对象或svn:ignore属性“ bigproject”具有许多目录和子目录(最多7级)。

src/apps/fld1/fld2/fld3/fld4/fld5    

当我检查迁移的git repo时,似乎所有文件夹都如预期的那样。

在实际迁移之前,我安装了一个登台服务器并将此“ bigproject”存储库推送到那里,并且我试图将构建脚本切换为使用git而不是svn。

这是我将仓库存储在“ git staging”服务器上的方式:

git clone --bare bigproject/ bigproject.git
cp -R bigproject.git /opt/git/
cd /opt/git/bigproject.git
git init --bare --shared

在构建服务器上,执行git克隆并检查后,我发现某些子目录丢失了-特别是在深3级之后

git@mygitserver:bigproject.git

克隆后我只有

src/apps/fld1

我试图多次重新导出裸仓库,以消除任何人为错误,但我似乎无法弄清楚。

你们有没有看过这个?

艾克曼

我可以看到两个可能的原因

1)您在Windows下,并且在PATH长度方面已达到255个字符的最大值

2)src / apps / fld1 /包含一些文件,而fld2及其所有子目录不包含任何文件。您不能在Git中添加一个空目录,如果该目录不包含任何文件,则该目录将被视为空目录。如果目录包含不包含任何文件的子目录,则仍然无法将其添加到git中。您可以查看Git常见问题解答-如何添加空的目录以下是节选

我可以添加空目录吗?

当前,Git索引(临时区域)的设计仅允许列出文件,并且没有足够的能力来进行更改以允许空目录的人对此情况已经足够在意,以进行补救。

在目录中添加文件时会自动添加目录。也就是说,目录永远不必添加到存储库中,也不需要单独跟踪。

您可以说“ git add”,它将在其中添加文件。

如果您确实需要在结帐中存在目录,则应在其中创建一个文件。.gitignore可以很好地达到此目的(还有一个使用.NET框架的MarkEmptyDirs工具,它可以让您自动执行此任务);您可以将其保留为空,或填写不希望在目录中显示的文件名。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章