在生产服务器上使用subversion使文件生效的最佳方法是什么?

时间:2008-11-04 22:51:11

标签: php linux svn

目前我设置了subversion,这样当我在Eclipse PDT中进行更改时,我可以提交更改,它们将保存在/ home / administrator / 项目文件中。该文件具有subversion推荐的/ branches / tags和/ trunk目录。我没有问题正确地将文件上传到存储库,但是我是否必须将Linux中的文件“mv”到/ var / www才能使它们在服务器上运行?是否有一个自动过程来执行此操作,我错过了?我假设我们不想将/ var / www目录(在机器上存在)存储库,但我不知道。

5 个答案:

答案 0 :(得分:7)

您可以在www目录中执行svn export。这将为您提供一个“干净”的repo版本,没有.svn目录。

cd /var/www
svn export /home/administrator/MyProject/trunk MyProject

编辑:从评论中添加一些好主意......

您希望更新导出副本的一些选项:

  • 运行svn export --force /home/...../ MyProject这将阻止它抱怨覆盖现有文件。此方法意味着如果从存储库中删除文件,它仍将保留在您的www文件夹中。
  • 每次更改SVN命令以导出到新目录:
    svn export /home/..../ MyProject_20081105
    然后创建该文件夹的符号链接:
    ln -s MyProject_20081105 MyProject
    只需在每次“释放”时删除并重新创建符号链接。在这种情况下,导出目录根本不需要位于www文件夹中。

答案 1 :(得分:2)

您可以在/ var / www文件夹中查看存储库的副本,然后在需要时运行 svn update (或将其切换到新的分支/标记等) )。因此,您在本地计算机上签出了一个存储库副本,您可以在其中进行更改和更新,另一个副本位于您的网络服务器上。

使用SVN存储库还可以恢复到早期版本。

答案 2 :(得分:1)

您还可以创建一个提交后挂钩,将提交更改的所有文件移动到/ var / www目录。

这是一个用python编写的示例,它通过ftp:

将更改的文件上传到远程主机

http://svn.haxx.se/dev/archive-2007-08/0287.shtml

答案 3 :(得分:0)

您可能想要记住在任何给定时间生产的文件 - 因此请保留“发布”标记(例如在/ project / tags / release中)。如果要发布,请将主干复制到那里。然后svn导出该释放标记。

或其他什么。

答案 4 :(得分:0)

我见过很多人on here和其他论坛谈论使用Capistrano进行部署,但我没有任何个人经验。