Svn 为什么乌龟身上会出现“乌龟”;修改的;如果有已修改但被忽略的文件,我的工作文件夹的状态图标?忽略配置文件问题

Svn 为什么乌龟身上会出现“乌龟”;修改的;如果有已修改但被忽略的文件,我的工作文件夹的状态图标?忽略配置文件问题,svn,tortoisesvn,ignore,svnignore,Svn,Tortoisesvn,Ignore,Svnignore,我对subversion/tortoiseSVN有点陌生,对于如何处理在开发和部署中应该不同的配置文件有点困惑,我认为我的问题源于这个问题 我希望中央存储库具有与部署配置文件匹配的config.php文件。因此,一旦该文件在存储库中并且部署服务器被更新,我就在开发中更新了我的工作文件夹,右键单击该文件,并为该文件选择“unversion and add to ignore list”。现在,它将显示已删除的符号以及修改后的整个工作目录。当我选择提交所有内容时,提交对话框会将config.php文

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

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

首先,它是如何进入“提交时忽略”列表的

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

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


谢谢。

您不能忽略存储库中已有的文件

重读第一句话

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

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

如果修改文件,并且在执行提交时不想更改文件,则有以下几种选择:

  • 使用变更列表来组织文件
  • svn commit
    命令行上列出要提交的文件
  • 在执行提交之前,还原不希望更改的文件。在提交之前,我总是执行
    svn status
    ,以确保不会意外修改不想更改的文件
我不知道变更列表在OrtoiseSVN中是如何工作的,但是你可以把你不想提交的文件放进去。将要忽略的文件放入变更列表中。问题是您不能对否定的更改列表进行操作。例如:

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

--- Changelist 'ignore'
M foo
M bar
M barfoo
我不能说:

$svn--cl foo提交

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

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

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

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

谢谢您的解释!