git - 如何用空目录克隆 CVS 存储库

标签 git cvs git-clone cvsimport

我使用以下命令将 CVS 存储库转换为 Git 存储库:

$ git cvsimport -vaikd :pserver:thillaiselvan@192.168.1.11:2401/ -C IVR-GUI GIT

但是,Git 会忽略 CVS 存储库中的空目录。但我希望克隆存储库,包括那些空存储库。我怎样才能让 Git 做到这一点?

最佳答案

Git 无法跟踪空目录,因此它们不会在 CVS-Git 转换中带入。来自Git FAQ :“在其中添加文件时,目录会自动添加。”您的目录不会出现,因为 Git 没有跟踪其中的任何内容。

如何在 Git 中跟踪空存储库

跟踪空目录的一种解决方法是在每个空目录中放置一个空文件,例如 .gitkeep(按照惯例使用 .gitkeep,但您可以将其命名为文件你想要的任何东西)。跟踪文件,然后您将能够克隆空目录。还有其他一些方法可以add empty directories to a Git repository .

从预先存在的 CVS 存储库中手动复制空文件

以下命令会将 cvs 存储库中的所有空目录复制到 Git 存储库(替换虚拟目录路径)

$ find ~/cvs_repo -type d -empty -exec cp -r {} ~/git_repo/ \;

然后,您可以使用您选择的解决方法将这些空目录添加到您的项目中,然后执行类似 $git commit -m "Add empty directories to repository" 的操作。

使用 cvsimport 自动化程序?

现在,我假设 cvsimport 会补偿 VCS 中的这种差异(CVS 允许您跟踪空目录,Git 不能)。我对该工具一无所知,但也许您可以传递一个选项让它自动处理添加空目录。

关于git - 如何用空目录克隆 CVS 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11895197/

相关文章:

git - 如何在 git 中使用完整路径?

git - `git submodule update --remote` vs `git pull --recurse-submodule` vs `git submodule foreach git pull origin main`

cmd - 无法在命令行中列出 cvs 模块中的文件?

cvs - doxygen 的 $Id : . .. $ 是什么意思

CVS命令获取文件的当前修订号

git - 为什么 git clone 不设置远程跟踪分支?

c++ - 使用 SourceTree 克隆 GitHub 上的公共(public)存储库

git - 加速 bash 脚本将 git repo 转换为 LFS

java - 使用 JGIT 远程获取提交列表

git - 如何知道 git 浅克隆的深度?