2011-01-13 20 views
8

我是新来的SVN和theres东西我坚持。最长时间我一直在本地开发网站(MAMP设置),然后在整个网站准备好后立即进行整个网站的生成。我在活网站上直接进行的任何小的其他更改,我经常会将活服务器上的所有文件重新下载到本地主机(因为我永远不会记住所有已更改的文件)。显然这不是做事的最佳方式。我很好奇我如何在一个实时网络服务器上设置SVN,所以我在本地制作的每一个变化都会在我告诉它时被推送到网站上。我在哪里创建svn回购? /domain.com/www/svn?我可以创建www目录作为实际的回购,如果是的话,这是不好的做法?如何在活的apache服务器上使用svn?

+1

您的实时Web服务器是否连接到Subversion服务器? – jgifford25 2011-01-13 16:09:47

回答

7

请勿在Web服务器目录中创建存储库!这是你问题的第一部分。

您的存储库可以在任何地方居住,只是不要将它放在web服务器的目录中。

当你安装的Apache httpd的(如果这是你使用的是什么),将其设置为忽略.svn目录是这样的:

<DirectoryMatch \.svn> 
    Order allow,deny 
    Deny from all 
</DirectoryMatch> 

现在,别的地方,除了你的Web服务器,创建一个Subversion库。从其他地方的工作目录中的该存储库签出,该目录不在您的Web服务器目录中。您现在可以将所有将存放在您的存储库中的文件导入到您的Subversion存储库中。

一旦你这样做了,你可以去你的Web服务器的目录,你想这些文件出现,并做一个结帐。

你应该有三件事情:

  1. Subversion版本库那不是在你的web服务器的目录
  2. 一个工作目录,其中包含您网站上的所有文件,这是不在您的网络服务器的目录中
  3. 一个在你的web服务器目录中的工作目录。

计划是这样的:你在工作目录中进行的更改不在你的Web服务器的目录中。您可以在这里进行测试,并在此处进行修改。你也可以在这里做所有的测试。

一旦您对所有事情都感到满意,您就可以在Web服务器目录下的Subversion工作目录中执行svn update。因此,您在网络服务器之外完成您的工作,测试,然后在网络服务器目录中执行svn update

如果你想变得很花哨,你可以创建一个Web分支,代表你的Web服务器目录中的代码。然后,你可以检查你的代码进出你想要的。当你准备好在你的网站上实现它时,你可以将它合并到Web分支。当你更新你的web服务器目录中的工作目录时,它只会提取web分支上的代码。

事实上,你可以用某种cronjob自动化这个过程。关闭网站,更新Web服务器目录中的Subversion工作目录,然后重新启动您的网站。这可以确保Web用户正在查看的文件不会从它们下面更改。

+0

非常感谢您回答我的问题,但我仍然需要对svn做更多的研究,以确保我能理解它。我想出了一个快速图表,你能检查一下,看看我是否正确理解你? http://danramosd.com/svn_diagram.png – dan 2011-01-14 16:49:22

1

我会安装在你的svn结帐的结构(在本机上)相匹配,你需要存储(并不一定与服务器的结构)的文件,例如:

my-project 
my-project/docs/README.txt  (any documentation you want to write) 
my-project/www/index.html (etc) 

和等等。然后,

(1)如果你有访问服务器上运行的命令,我会登录并做如:

cd /domain.com 
rm -rf www 
svn co https://svn.myserver.com/my-project/www www 

(2),否则,我会检查你的本地计算机上的文件并将它们传送到服务器。

选项(1)更好,但即使使用选项(2),您也比目前的设置有优势。如果您在服务器上更改文件,则可以将整个目录返回到您的本地文件夹到一个新目录,然后将文件“提交”到Subversion服务器。 Subversion(需要将.svn目录复制到服务器/从服务器复制)将知道您更改了哪些文件。

相关问题