颠覆神秘化?

时间:2010-06-19 13:01:14

标签: svn coda

我最终决定转向版本控制工作流程但是...这是一个月我正在尝试使用SVN设置工作流程而没有运气。

我和Coda合作(svn是  支持)+媒体寺庙托管。 我只是在/ data / svn / myproject中设置了一个repo(遵循MT指南)并导入了我的网站root。

问题1:svn只导入了根目录中的一半文件而不是目录。

然后我尝试(按照教程)在Coda结帐。

问题2:我收到错误(本地目录不是工作副本),只创建了一个.svn文件夹。

现在,我想我根本不了解版本控制系统是如何工作的。请告诉我:当我第一次结帐文件时,他们会从我的远程目录复制到我的本地文件夹? FTP和版本检查仍然是两个独立的任务? 我的意思是:当我在Coda中提交文件时,它是否会自动放在我的远程网站目录中更新旧文件? 而且,它只是关于代码或一切都置于版本控制(图像等......)?

对不起我在询问之前已经阅读了很多指南,但是我没有得到它!

由于

1 个答案:

答案 0 :(得分:3)

首先,我建议您将版本控制视为与IDE分离的内容。它无论如何都适用于文件系统级别,而Coda为您提供的任何集成只是对它的抽象。如果你把Coda排除在等式之外,最初会更容易理解。

现在,我个人不喜欢命令行(当然它很强大)所以如果你在Windows上我建议你去玩Tortoise并玩弄它,它会让你对事物有更好的感觉。虽然我不知道在Mac上。也许在Mac上有一些很好的SVN图形工具。

基本上,SVN工作流由两部分组成 - 存储库和本地文件夹。存储库就像一个服务器。它是所有事物的中心位置。可以把它想象成一个“智能FTP文件夹”。

工作流程如下:您将所有源代码和内容写入本地文件夹。当您觉得自己完成后,将其复制到中央文件夹(存储库),然后开始处理下一件事。完成后,再次将其复制到中央文件夹。等等。此操作是“提交”。您将本地文件复制到中央文件夹,覆盖那里的任何内容。

嗯,它实际上比简单的复制更“聪明”。 SVN跟踪所有更改,因此当您在本地删除文件时,提交也将删除服务器上的文件。这就像使服务器文件夹看起来与本地文件夹完全一样。

现在,版本控制的主要卖点是存储库的所有这些更新都是非破坏性的。也就是说,当您将最新的最大东西复制到存储库时,它会归档那里的旧文件,您可以随时将它们取回。实际上很难从SVN存储库中删除某些东西。这就是为什么即使是单个开发人员也倾向于使用源代码控制 - 它就像一个备份系统,如果你搞砸了,你可以随时使用旧版本并重新开始。什么都没有丢失。而且它也非常有效。

SVN相对于简单FTP文件夹的另一个主要优点是当多个用户对相同文件进行更改时。它跟踪事物,所以当你和你的伙伴都修改了同一个文件时,它会在提交时发出警告。大多数情况下,SVN将能够自动合并您的更改,但有时您也必须手动排序。但同样 - 没有人可以意外地丢失他们的更改,因为有人覆盖了他们修改的文件。历史记录保留了所有这一切,一旦你们都试图覆盖同一个文件,你就会得到很大的警告和东西。

所以,工作流程......

嗯,大部分时间都是这样的:

  1. 您设置了存储库。它最初是空的,就像一个空文件夹。
  2. 然后你“检查”空文件夹到你的本地文件夹。选择一个新的空文件夹,只是为了安全起见。这有点无意义,但它在本地文件夹和存储库之间建立了一个链接。即,将创建小.svn文件夹(您应该单独留下这些小文件夹并忽略它们)。从现在开始,SVN将知道此本地文件夹镜像存储库文件夹,并将提交到该存储库文件夹。
  3. 现在您将所有内容复制到新的空文件夹中。
  4. 向SVN说“添加所有文件”。这会将所有文件标记为新添加项,下次提交时应将这些文件复制到存储库。现在,通常会有一些您不想复制到服务器的文件。你在那里包含的内容以及你不包含的内容取决于你,但通常所有与程序源相关的东西(包括图像的内容等资源)都会被复制,而IDE会自动重新生成本地文件出。可以这样想 - 当另一个人想要加入你时,他会从存储库中获取所有文件。哪些与他相关,哪些会被删除? SVN还包括一个名为“忽略”的功能,因此它不会在将来提示您有关不必要的文件。
  5. 然后提交。这会将您的文件复制到服务器并在那里填充文件夹。
  6. 之后,开始处理下一个功能。完成后,提交。然后开始下一个功能。等等。实际上,你应该随时提交。一个经验法则是 - 使服务器副本保持理智状态。如果它没有编译,或者处于一些混乱的重写之中,请不要提交,这会使一半程序无法正常工作。提交完成的东西。
  7. 这就是它。如果你和你的好友一起工作,你也会偶尔做一个“更新”。这会将您的好友提交的更改复制到您的本地文件夹。

    SVN还有其他有用的功能,但这是基本设置。对此感到满意,然后寻找更多。