在SVN下保留配置文件的最佳方法?

时间:2008-10-06 15:18:26

标签: svn version-control configuration

在版本控制下保留配置文件(例如httpd.conf,my.cnf,.bashrc ...)的最佳方法是什么? 为了版本化的好处,我希望解决方案也可以作为备份,这样我就可以带来一个全新的服务器并直接从SVN中签出(或导出)配置文件

一个好的方法是存储配置文件的原始路径。

6 个答案:

答案 0 :(得分:4)

我修改控制我的配置文件,但我使用git而不是svn(当你有多台机器时这更容易)。我有一个bash脚本(称为install.sh),也位于存储库下,可以将文件复制或符号链接到计算机上的适当位置。

因此,如果我需要在新机器上进行设置,我只需要对存储库进行git克隆(相当于svn checkout)并运行我的install.sh来设置适当的配置文件位置。 install.sh周围意味着我也存储了配置文件的原始路径,正如您所说的那样。

答案 1 :(得分:2)

这就是我实施的内容:

我有一台服务器将所有配置的rsync同步到一个目录中(比如/ data / configs / hostname / {etc,httpd}。

我每小时运行一次rsync来传输更改。一旦rsync完成,就会有一个svnautocommit脚本自动提交更改。这样,我可以回滚到我想要的任何更改或任何版本。

您可能需要根据您的要求规划SVN目录结构。

答案 2 :(得分:0)

我为多台机器执行此操作,从旧的Solaris 8机箱到Mac OS X,我的布局非常简单:

在我的存储库中,我有以下内容:

<root>/common
  /.emacs.d
  /.bash_common
  /scripts # platform-independent binary tools

<root>/linux
  .bashrc
  .emacs
  ...

<root>/solaris
  .bashrc
  .emacs
  ...

<root>/osx
  .bashrc
  .emacs
  ...

每个OS homedir都有一个svn:externals引用.emacs.d,.bash_common和脚本,因此不会重复。

另外,我在linux和solaris目录中有一个.bash_hostconfig,具有特定于主机的路径配置等,因为我在工作时的设置与在家时的设置非常不同(FC5-8和RHEL3-5,具体取决于在哪里我。)

所以,在这些事情之间,我有一个非常简单的启动和运行新机器的过程:我只需将/ $平台检入一个临时目录,然后用这些文件覆盖$ HOME中的所有内容。我不需要存储原始路径,因为它总是以这种方式相对于$ HOME。

答案 3 :(得分:0)

我们使用CVS将配置存储在尽可能平坦的目录结构中。这种技术很容易扩展到SVN。

然后我们将Makefile设置为使用CVS导出到:

  1. 创建没有CVS组件的CVS目录结构的副本,
  2. 在本地目录中创建目标计算机所需的目录结构,就像您在目标计算机的根目录中一样,例如: ./my_cvs_dir/etc/ ..和./my_cvs_dir/usr/local/newapp /..,
  3. 将文件从CVS结构复制到目标目录结构
  4. 为目标目录结构创建一个tarball,并
  5. 将tarball部署到目标计算机。
  6. 我们还设置了这些tarball,以增加专业化,例如: Sol10,Apache,特定应用程序等。

    HTH

    欢呼声,

    Rob

答案 4 :(得分:0)

您可以将所有配置文件存储在特定目录树下,每个应用程序一个子目录。由于大多数应用程序都应该有一个指令来指定配置路径,因此每个服务器只能更改(或者如果你有硬编码的配置文件,可能包括include)。

然后可以将此树检入您喜欢的任何VCS。

对于部署,您可以编写一个shell脚本或类似的东西来初始化所有内容以使用您的配置文件树。

答案 5 :(得分:0)

无论如何你想要一个中央商店,你可能会选择一些稍微复杂的东西,比如 Slack 。您可以在推送服务器上管理和版本控制文件,然后将其同步到客户端。 explanation of subroles有一些关于如何构造树的例子。