操作系统和工具信息:我正在使用最新的(2/11/2015)Cygwin在Windows 7上的精简Unix bash更新。
我正在努力将CVS存储库转换为使用Git,并且需要从tarball中恢复文件。提取文件后,我尝试使用" cvs checkout"这已经获得了一些文件,但是大部分文件都在Attic目录中,并且没有检出,即使我将它们全部移到一个目录中,所以它们不在Attic中,如建议in this gnu forum之后这没用,我试过cvs2svn哪个不能解决。最后,我尝试使用常规的RCS co,它创建了我需要的大部分文件。
但是,来自一个顶级目录中的Attic子目录的所有转换文件都是空的(0kb)。即使将v文件移动到更高级别,它们也无法正确提取。
代码(rcs co应该按照以下方式工作)
$ pwd
/tmp/test/repo/<working-directories>/
$ find . -type f -wholename "*Attic/**,v" -exec rcs co {} \;
$ find . -type f -name "*,v" -exec rcs co {} \;
$ cd /tmp/test/repo/<trouble-directory>
$ find . -type f -name "*,v" ! -wholename "*Attic/**,v" -exec rcs co {} \;
但是,rcs无法正常运行以下命令并创建大小为0kb的文件
$ pwd
/tmp/test/repo/<trouble-directory>
$ find . -type f -wholename "*Attic/**,v" -exec rcs co {} \;
转移到顶层无效
$ pwd
/tmp/test/repo/<trouble-directory>
$ find . -type f -wholename "*Attic/**,v" -exec mv {} . \;
$ find . -maxdepth 1 -type f -name "*,v" -exec rcs co {} \;
即使转移到工作目录也不起作用
$ pwd
/tmp/test/repo/<trouble-directory>
$ find . -type f -wholename "*Attic/**,v" -exec mv {} ../<working-directory> \;
$ cd /tmp/test/repo/<working-directory>
$ find . -maxdepth 1 -type f -name "*,v" -exec rcs co {} \;
什么可以解释rcs co的这种行为?其他文件具有相似的大小和扩展名。我似乎无法在存储库的文档中找到任何内容来处理此特定目录中的Attic文件,并且我无法在任何配置中找到吸烟枪。有什么想法吗?
答案 0 :(得分:0)
某些开发人员签入零大小的文件以表明它已被删除。或者,他们可能依赖于版本标签并省略了该标签中的文件。
如果是这样做的话,rlog会显示更改(通常会有评论说该文件已被删除)。
此外,可以使用rlog显示的tip / head版本编写脚本以计算一个版本并获取文件的最后一个非空版本。当然,这更复杂 - 但由于问题是为什么,而不是如何,一个合适的脚本将是一个单独的答案。
答案 1 :(得分:0)
reason for files being in the Attic是他们被删除或以某种方式不可用。这种文件的最新版本可以合理地用空文件表示,或者根本不用文件表示。
如果你想从阁楼中检索早期版本,我想你可以;但是,你在项目的历史中引入了一个不一致的地方。
我对git cvsimport
没什么经验,但如果我是你,那就是我会尝试的第一件事。这并不是说你是第一个想要从CVS迁移到Git的人。