0

我对 subversion/tortoiseSVN 有点陌生,对如何处理在开发和部署中应该不同的配置文件有点困惑,我认为我的问题源于这个问题。

我希望中央存储库具有与部署配置文件匹配的 config.php 文件。因此,一旦在存储库中并更新了部署服务器,我就在开发中更新了我的工作文件夹,并右键单击该文件并为此文件选择“取消版本并添加到忽略列表”。现在,它显示已删除的符号和修改后的整个工作目录。当我选择提交所有内容时,提交对话框将 config.php 文件显示为已删除,但在“ignore-on-commit”列表中,因此它不会被提交。

首先,它是如何进入“ignore-on-commit”列表的?

其次,它应该在那个名单上吗?就像我说的,我不想覆盖存储库上的 config.php 文件,但我不想完全删除 config.php 文件。我只是希望它在我的开发结帐中有所不同。我做对了吗?

最后,为什么状态图标没有改变?

谢谢你。

4

1 回答 1

0

您不能忽略存储库中已经存在的文件。

重读第一句话。

忽略版本控制系统中的某些内容表示忽略版本控制系统中尚未存在的文件。例如,假设您有一个编译过程,它获取*.c存储库中的文件并将它们编译成*.o文件。这些*.o文件只是编译过程的一部分,您当然不希望它们意外添加到您的存储库中。

如果您忽略*.o文件,并且您svn status在 Subversion 中执行了操作,Subversion 将不会报告这些文件。如果您执行了svn add *,Subversion 不会将这些文件添加到您的存储库中。这就是版本控制系统中忽略的含义。

如果您修改了一个文件,并且您不想在提交时更改它,那么您有几个选择:

  • 使用更改列表来组织您的文件。
  • 列出要在svn commit命令行上提交的文件。
  • 在提交之前还原您不想更改的文件。在我提交之前,我总是会svn status确保不会意外修改我不想更改的文件。

我不知道更改列表在 TortoiseSVN 中是如何工作的,但是您可以放置​​您不想提交的文件。您要忽略的文件放入changelist。问题是您不能对否定的更改列表进行操作。例如:

$ svn --cl ignore foo bar barfoo
$ svn status
M  blat
M  floob

--- Changelist 'ignore'
M foo
M bar
M barfoo

我不能说:

$svn!--cl foo 提交

并且只提交对 flob 和 blat 的更改(除非我也为这些文件创建了一个更改列表)。

相反,您将还原更改列表中的文件ignore,然后提交:

$ svn revert --cl ignore -R .  #Reverts all files in the changelist
$ svn commit --keep-changelists #Commits all other files

请注意,该--keep-changelist选项会将您放在更改列表中的文件保留在更改列表中,即使它们没有更改。这样,您可以在下一次提交之前再次恢复它们。

于 2013-06-13T05:20:34.270 回答