为什么TortoiseSVN会显示我的工作文件夹的“已修改”状态图标,如果有修改但被忽略的文件?忽略配置文件问题

时间:2013-06-13 00:28:31

标签: svn tortoisesvn ignore svnignore

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

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

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

其次,它应该在该列表中吗?就像我说的,我不想覆盖存储库上的config.php文件,但我不想完全删除config.php文件。我只是希望在我的开发结帐中有所不同。我是以正确的方式做到的吗?

最后,为什么状态图标不会改变?

谢谢。

1 个答案:

答案 0 :(得分:0)

您无法忽略存储库中已有的文件。

重读第一句话。

忽略版本控制系统中的某些内容会忽略版本控制系统中已有的文件。例如,想象一下,您有一个编译过程,该过程采用存储库中的*.c文件并将其编译为*.o个文件。 *.o文件只是编译过程的一部分,您当然不希望它们被意外添加到您的存储库中。

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

如果您修改了某个文件,并且在执行提交时不想更改该文件,则可以选择以下几种方法:

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

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

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

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

我不能说:

$ svn! --cl foo commit

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

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

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

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