将目录迁移到具有历史记录的SVN的最佳方法

将目录迁移到具有历史记录的SVN的最佳方法,svn,Svn,我每周备份一次源目录,希望迁移到SVN 在移到SVN时,我希望保留源目录的演变,以建立源树的SVN历史。 让我通过一个例子来解释这一点: my_project_2011_02_01.zip my_project_2011_02_13.zip my_project_2011_02_18.zip my_project_2011_02_23.zip ... 我的任务: 提取第一个版本my_project\u 2011\u 02\u 01.zip,并将其添加到my_project下的SVN中 现在,

我每周备份一次源目录,希望迁移到SVN

在移到SVN时,我希望保留源目录的演变,以建立源树的SVN历史。
让我通过一个例子来解释这一点:

my_project_2011_02_01.zip
my_project_2011_02_13.zip
my_project_2011_02_18.zip
my_project_2011_02_23.zip
...
我的任务:

  • 提取第一个版本
    my_project\u 2011\u 02\u 01.zip
    ,并将其添加到my_project下的SVN中
  • 现在,我想提取
    我的\u项目\u 2011\u 02\u 13.zip
    并添加新文件,覆盖更改的文件并删除不再在源代码树中的文件
我使用svn客户端龟甲VN


哪种方法是实现这一目标的最佳/最舒适的方法?

我想唯一的方法是从检查第一周的档案开始。接下来,用第二周的存档覆盖本地文件并签入这些更改。重复此操作,直到签入所有存档

除了所需的时间之外,这种方法的主要麻烦在于svn通常无法自动解决冲突。在您的情况下,您只需选择最新版本即可获胜,但这可能会为过程增加更多时间

你有什么理由需要完整的历史记录吗?在这种情况下,我倾向于只检查最新版本,而不担心到目前为止的历史。或者只签入与主要版本相关的归档文件


编辑:要处理删除,您需要先删除硬盘上的文件,然后解压缩下一个归档文件。恼人的是,您需要保留.svn文件夹,以便svn可以跟踪哪些文件不同,哪些文件被添加或删除。

您可以编写一个批处理脚本,该脚本基本上为每个zip文件执行以下步骤:

  • svn rm*(在项目文件夹中)
  • 解压缩zip并复制到项目文件夹中
  • svn添加--强制。(在项目文件夹中)
  • svn提交-m“项目快照的版本”(在项目文件夹中)

  • 您的方法不会删除新版本中不存在的文件。就我所见,冲突应该没有问题。我真的很想走这条路,只为一些里程碑做这件事。但是我需要一种方法来删除那些不再存在的文件,就像Alp说的那样。当我需要从命令行执行Subversion操作时,我会在Windows上使用。你是说?这看起来比标准的SVN CLI更不友好。=)我坚持我对Slik SVN的推荐。我当然可以在cygwin上使用SVN命令行客户端。但它必须处理在较新版本的项目文件夹中删除的文件。我指的是默认的windows命令shell。只需将Subversion客户端安装在$PATH中的某个位置,并将上述命令放入批处理文件中。对于linux用户来说,等效的脚本当然是bash脚本。是否可以在不提交的情况下删除项目文件夹的全部内容,将较新的内容复制到其中,然后提交。这会替换旧项目文件夹中先前存在的文件,并删除新项目文件夹中不再存在的其他文件吗?我不知道TortoiseSVN的行为,但它应该是这样工作的。