如何将部署到多个服务器的现有网站转换为SVN管理的网站,而不破坏用户文件?

如何将部署到多个服务器的现有网站转换为SVN管理的网站,而不破坏用户文件?,svn,deployment,Svn,Deployment,我有一个现有的网站,它使用相同的代码库,但在不同的服务器上部署了许多不同的配置。每个配置都有一组用户,他们可以上传个人文件。这些文件存储在每台服务器上的“uploaded files”(上传文件)目录中,该目录正好位于运行该站点的代码旁边 我正在尝试将代码库引入Subversion,这样我们可以更好地管理事情,并且还使用SVN使部署更容易,但是,在每台服务器上,用户文件将不同。我知道处理这个问题的最佳方法是将用户文件存储在其他地方,但在这一点上,这不是一个选项 因此,考虑到这一点,在这种情况下,

我有一个现有的网站,它使用相同的代码库,但在不同的服务器上部署了许多不同的配置。每个配置都有一组用户,他们可以上传个人文件。这些文件存储在每台服务器上的“uploaded files”(上传文件)目录中,该目录正好位于运行该站点的代码旁边

我正在尝试将代码库引入Subversion,这样我们可以更好地管理事情,并且还使用SVN使部署更容易,但是,在每台服务器上,用户文件将不同。我知道处理这个问题的最佳方法是将用户文件存储在其他地方,但在这一点上,这不是一个选项


因此,考虑到这一点,在这种情况下,我如何使用Subversion?

只是不要将该文件夹存储在存储库中,例如,永远不要签入该文件夹。我真的看不出这里有什么问题…

不要用那种方式检查,你不能覆盖任何内容。对于config.ini文件和类似文件,您可以在存储库中存储具有不同名称(即.config.ini.tmpl)的模板版本,该版本不会覆盖实际文件

将文件夹/文件添加到您的svn ignore,这样您就不会意外地签入它们


导出到一个新文件夹,然后进行快速mv或httpd.conf编辑,apache重新启动以立即更改为新版本也是一种很好的做法。如果这样做,您可以复制上载文件和/或保留旧版本作为备份,以防部署或新版本的代码出现问题。

以下是我最终使用的方法:

我在开发服务器上签入了所有内容,包括那里的用户文件。这允许签出整个dev服务器,以便每个人都有相同的代码批

然后,对于除dev服务器以外的服务器,我复制掉服务器上的用户文件,执行干净的签出,“取消签出”带有用户文件的目录,方法是将该目录更新为修订版,并将其从工作副本中删除,然后从该服务器复制回原始文件

这似乎工作得很好,虽然并不理想,但还没有造成任何问题,因为Subversion只是将这些文件视为未版本文件


此外,对于配置文件,我们确实在这些少量文件中添加了.template。

我要转到svn的方法是导入一个基线版本,创建一个具有所需配置差异的分支,然后检查服务器的正确分支。我不认为我可以签出到一个已经有内容的目录(例如有问题的目录),你可以,但是如果你确定的话,你会得到一个问题。(至少在通过陆龟使用SVN时。)