将配置文件存储在文件系统根目录下的git repo中是一个好主意吗?

将配置文件存储在文件系统根目录下的git repo中是一个好主意吗?,git,version-control,Git,Version Control,我的系统管理员在文件系统的根目录下放置了一个git repo来存储配置文件。这意味着我可以在文件系统中的任何位置添加到该存储库中。这意味着“git status”不会告诉我,如果我的项目不存在回购协议,那么就没有回购协议,因为根回购协议总是存在的 这对我来说似乎很危险。我错了吗 对我来说,拥有一个git repo是一个隐含的契约,即这个目录中的所有内容都在源代码管理中(除了由于.gitignore而被忽略的对象文件等)。这是旧式的源代码管理思想吗 这对我来说似乎很危险。我错了吗 我认为这是令人困

我的系统管理员在文件系统的根目录下放置了一个git repo来存储配置文件。这意味着我可以在文件系统中的任何位置添加到该存储库中。这意味着“git status”不会告诉我,如果我的项目不存在回购协议,那么就没有回购协议,因为根回购协议总是存在的

这对我来说似乎很危险。我错了吗

对我来说,拥有一个git repo是一个隐含的契约,即这个目录中的所有内容都在源代码管理中(除了由于.gitignore而被忽略的对象文件等)。这是旧式的源代码管理思想吗

这对我来说似乎很危险。我错了吗

我认为这是令人困惑的,而不是危险的。我们在我工作的地方尝试过类似的方法,最终放弃了,原因正是你所描述的。我们的解决方案是将大部分配置转移到Puppet中,因此我们将版本控制应用于配置管理系统,通常不直接对系统进行更改

系统管理员的一个选择是将
.git
目录放在其他地方,然后在需要与存储库交互时适当地设置
git\u DIR
环境变量。例如:

GIT_DIR=/etc/sysrepo.git git add /etc/someconfig.conf
这解决了将
.git
目录放在文件系统根目录中的相关问题

这对我来说似乎很危险。我错了吗

我认为这是令人困惑的,而不是危险的。我们在我工作的地方尝试过类似的方法,最终放弃了,原因正是你所描述的。我们的解决方案是将大部分配置转移到Puppet中,因此我们将版本控制应用于配置管理系统,通常不直接对系统进行更改

系统管理员的一个选择是将
.git
目录放在其他地方,然后在需要与存储库交互时适当地设置
git\u DIR
环境变量。例如:

GIT_DIR=/etc/sysrepo.git git add /etc/someconfig.conf

这解决了将
.git
目录放在文件系统根目录中的相关问题。

学校的Im在服务器上运行所需的最少软件量。运行git来管理配置的更改并不是一个坏主意,但是将repo放在服务器的根目录上对于硬盘空间来说是潜在的危险。想象一下,不小心将一个5gb数据库文件添加到repo中,并在不读取屏幕的情况下提交一些配置文件,会对硬盘空间造成多大影响

我目前正在实施的更安全的方法是找到一个中心位置,并在那里创建回购协议。为每台服务器创建一个子文件夹,并创建一个shell脚本,该脚本可以将/etc和任何其他文件scp到该文件夹,或将其从该服务器scp到该文件夹。然后从那里用git跟踪他们


我在几个地方实施了这项技术,效果很好。您需要解决明显的安全问题,但这些问题并非不可能克服。

学院的Im需要在服务器上运行最少数量的软件。运行git来管理配置的更改并不是一个坏主意,但是将repo放在服务器的根目录上对于硬盘空间来说是潜在的危险。想象一下,不小心将一个5gb数据库文件添加到repo中,并在不读取屏幕的情况下提交一些配置文件,会对硬盘空间造成多大影响

我目前正在实施的更安全的方法是找到一个中心位置,并在那里创建回购协议。为每台服务器创建一个子文件夹,并创建一个shell脚本,该脚本可以将/etc和任何其他文件scp到该文件夹,或将其从该服务器scp到该文件夹。然后从那里用git跟踪他们


我在几个地方实施了这项技术,效果很好。您需要解决明显的安全问题,但这些问题并非不可能解决。

我怀疑
/.git
属于
root
所有,因此不是每个人都可以添加它。另外,一种解决方法是使用
echo'*'>~/.gitignore
创建
~/.git
(我总是这样做)。我怀疑
/.git
属于
root
所有,所以不是任何人都可以添加到它。另外,一种解决方法是使用
echo'*'>~/.gitignore
创建
~/.git
(我总是这样做)。