Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 迁移到SVN,对删除旧文件感到困惑_C++_Svn_Version Control_Migration_Starteam - Fatal编程技术网

C++ 迁移到SVN,对删除旧文件感到困惑

C++ 迁移到SVN,对删除旧文件感到困惑,c++,svn,version-control,migration,starteam,C++,Svn,Version Control,Migration,Starteam,我有一个StarTeam回购协议,我正试图迁移到SVN。不幸的是,回购是巨大的,所以我不能使用任何polarion脚本,等等。我求助于在StarTeam中检查每个版本的快照,然后手动将它们添加/提交到SVN 但是,我对如何处理旧文件感到困惑。在StarTeam中,我们必须将删除的文件移动到“过时”文件夹中,因为清除命令删除了文件的所有副本。我知道我不需要在SVN中这样做,但SVN如何处理已删除/丢失的文件 假设我有以下结构中的三个文件: trunk/ Src/ A.cpp

我有一个StarTeam回购协议,我正试图迁移到SVN。不幸的是,回购是巨大的,所以我不能使用任何polarion脚本,等等。我求助于在StarTeam中检查每个版本的快照,然后手动将它们添加/提交到SVN

但是,我对如何处理旧文件感到困惑。在StarTeam中,我们必须将删除的文件移动到“过时”文件夹中,因为清除命令删除了文件的所有副本。我知道我不需要在SVN中这样做,但SVN如何处理已删除/丢失的文件

假设我有以下结构中的三个文件:

trunk/
    Src/
        A.cpp
        B.cpp
        C.cpp
如果从一个版本到另一个版本,我删除了“C.cpp”,我是否只需要提交所有src就可以在SVN repo中反映删除

同样,如果我删除了“C.cpp”,但添加了“D.cpp”,那么在提交之前,我需要在所有“src/”上调用add。这会导致检测和删除丢失的文件时出现问题吗?它们太多,无法手动检查并逐个删除

作为一个单独的问题,在我可以添加/提交之前,有没有一个原因可以解释为什么要花3个小时才能检测到哪些文件被更改?我所看到的只是对话框中的“请稍候…”消息,这需要花费很长时间


谢谢

您对回购协议所做的任何更改都需要提交,因此在执行
svn delete
后,您需要提交
svn
。同样,当您添加文件时,这是一个需要提交的更改。在这两种情况下,都可以在不提交的情况下撤消添加和删除操作

就在一个事务中添加和删除文件而言,同样“正常工作”,您将有效地发布:

svn delete C.cpp
svn add D.cpp
svn commit
如果要恢复已删除的文件,则可以从svn repo的早期版本恢复该文件,然后重新提交(另请参阅)

但在删除文件时,您必须记住的一点是:您必须使用subversion工具(即从命令行中以
svn delete
的形式删除它,或者在Turtoisesvn中使用delete。只需使用
del
rm
删除它,或者像windows资源管理器这样的文件管理器,svn就会将文件视为“丢失”而不是“删除”,并且提交回购协议不会提交删除;因此,下次更新工作副本时,丢失的文件将被还原。因此,您使用subversion删除文件,以便subversion知道您确实希望将其删除


关于你的最后一个问题——SVN的哪个版本以及回购协议有多大(就文件数量而言)本质上,T-SVN必须遍历树,对照repo版本检查每个文件,以查看其是否发生了更改。从SVN 1.7开始,工作副本格式发生了更改,数据库中保存了大量元数据,并改进了原始副本的存储(即,文件从SVN出来时的样子)也就是说,它的速度比它快。如果你不使用1.7,那么,如果你有一个大的回购,但只在其中的一小部分工作,那么考虑使用稀疏签出来减少你的本地工作拷贝的大小。请看一个文件从SuffEd中检查一个简短的概览或稀疏的签出。< / P>是的,但是如果我有。在稍后的快照中删除了一组文件,如何让它们从RePO中删除,必须手动删除每个文件。您需要查看脚本。要考虑的键命令是“代码> SvN状态< /代码>。我正在考虑如何将此转换为没有CygWin的Windows,但是在UNIX框中,您可以使用。
svn status
从repo中删除丢失的文件如下:
svn delete`svn status|awk'/^!/{print$2}“`
。类似地,对于
svn添加
搜索
而不是
svn status
的输出中。戳后…您可能可以分为两部分进行操作:
svn status | findstr/R^!>c:\temp\missing_files.txt
然后在(c:\temp\missing_files.txt)中搜索
for/f“tokens=2”%i)请执行svn删除%i
…以及类似的
svn添加操作
。我是否可以(本地)完全删除工作副本中的文件夹、“svn添加”然后“svn提交”“?也许我应该提到我正在使用TortioseSVN。在我对文件夹进行添加,然后尝试提交后,它似乎意识到文件已被删除,但它给我一个错误,即目录已过期,我应该首先更新。