0

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

我使用 Coda(支持 svn)+ Media Temple 托管。我刚刚在 /data/svn/myproject 中设置了一个 repo(遵循 MT 指南)并导入了我的网站根目录。

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

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

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

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

抱歉,在询问之前我已经阅读了很多指南,但我不明白!

谢谢

4

1 回答 1

3

首先,我建议您将版本控制视为与您的 IDE 分开的东西。无论如何,它在文件系统级别上工作,而 Coda 为您提供的任何集成都只是对此的抽象。如果您将 Coda 排除在等式之外,最初会更容易理解事物。

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

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

工作流程是这样的:你在本地文件夹中编写所有源代码和东西。当你觉得你已经完成了,你将它复制到中央文件夹(存储库),然后开始处理下一件事。完成后,再次将其复制到中央文件夹。等等。这个动作是“提交”。您将本地文件复制到中央文件夹,覆盖那里的所有内容。

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

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

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

所以,工作流程...

嗯,大多数时候是这样的:

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

差不多就是这样。如果你和你的伙伴一起工作,你也会时不时地做一次“更新”。这会将您的好友已提交的更改复制到您的本地文件夹。

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

于 2010-06-19T13:37:58.797 回答