我对subversion / tortoiseSVN有点新意,对于如何处理开发和部署应该有所不同的配置文件有点困惑,我认为我的问题源于这个问题。
我希望中央存储库具有与部署配置文件匹配的config.php文件。因此,一旦存储库和部署服务器更新,我就会在开发中更新我的工作文件夹,然后右键单击该文件并为此文件选择“unversion并添加到忽略列表”。现在,它显示已删除的符号和整个工作目录已修改。当我选择提交所有内容时,提交对话框会将config.php文件显示为已删除,但在“ignore-on-commit”列表中,以便它不会被提交。
首先,它是如何进入“ignore-on-commit”列表的?
其次,它应该在该列表中吗?就像我说的,我不想覆盖存储库上的config.php文件,但我不想完全删除config.php文件。我只是希望在我的开发结帐中有所不同。我是以正确的方式做到的吗?
最后,为什么状态图标不会改变?
谢谢。
答案 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
选项会将您放在更改列表中的文件保留在更改列表中,即使它们没有更改。这样,您可以在下次提交之前再次还原它们。