2013-08-23 27 views
-1

昨天我通过ssh改变一个CSS文件代码的关注,我把文件中的某些代码:SVN:与改变SVN和直接在服务器上

#c285{ 
    margin-top: 33px; 
    float: right; 
} 

今天我不知道怎么会如果我做到这一点通过SVN,所以今天我检查了源代码,并做了一个试验,我把一些代码在这个文件中:

#35{ 
    clear: both; 
} 

然后,我经历了TortoiseSVN致力于此css文件,我发现结果是这样的:

a。服务器上的css文件 具有#c285#35

b。在SVN
CSS文件只有#35

所以我的问题是:

1.Does这是什么意思?如果我在ssh中更改代码,稍后如果我在svn中没有触及此代码(#c285),它会停留在那里,如果我在svn中更改它将被覆盖?

2.后来,如果我需要发布它,将通过ssh完成的更改发布还是只发生在svn中?

+0

从不。永远。永远。直接进行更改。始终通过源代码管理。你也不想用'svn up'进行部署 - 因为你迟早会知道有人(你)会把它搞砸。 – thekbb

回答

0

听起来对我来说就像你有一个在你的web服务器上的工作拷贝结账。当您在Web服务器上编辑文件时,您在那里对文件进行了本地更改。

稍后,您在本地计算机上的单独工作副本上更新了一个文件,并将其提交给SVN。然后,您或某个自动化进程在Web服务器上的工作副本上运行svn update

当您更新时,您对工作副本的本地修改将保持不变,更新的输出通常会显示一行以G开头的行,以显示svn服务器的更改已与本地更改合并。但是,如果您的更改与本地更改冲突(修改相同的行),那么它将显示一个C(如在Conflict中),然后工作副本中的文件将具有格式以显示哪些方面具有哪些数据,以便您可以解决冲突。

根据你看起来如何使用Subversion,你应该避免修改Web服务器上的工作副本。这样做会冒你的更改造成冲突,从而破坏你的文件(你的文件中会有冲突标记,这将是无效的CSS)。你可能想了解这里处理冲突: http://svnbook.red-bean.com/en/1.7/svn.tour.cycle.html#svn.tour.cycle.resolve

可以使用svn status命令来查看是否有本地修改的工作副本。您可能需要阅读svnbook本节有关status命令的详细信息: http://svnbook.red-bean.com/en/1.7/svn.tour.cycle.html#svn.tour.cycle.examine

我不能回答你的第二个问题,因为我不知道什么样的行动“发布”在你设置的上下文的含义。你需要分享更多关于你如何运作的细节,或者如果你不了解细节,可以与任何人进行讨论。

我还建议你阅读复制 - 修改 - 合并工作流程的解释在svnbook: http://svnbook.red-bean.com/en/1.7/svn.basic.version-control-basics.html#svn.basic.vsn-models.copy-merge