使用 git 进行 pf.conf 版本控制的问题
Problems using git for pf.conf version control
我刚找到一份新工作,我的职责之一是管理几个 FreeBSD 机器 运行ning PF 作为数据包过滤解决方案。防火墙过去由一个人管理,但现在我们是 3 个人,可能同时修复相同的配置文件。我想使用 git 来处理本地副本中的更改请求,并在完成后将更改推送到服务器。这会给我:版本控制、快速回滚和冲突管理。
我启动了一个虚拟机进行测试,这是我到目前为止所做的。
运行 git init
在 /etc
和 /usr/local/etc
内
为两个本地回购在 /usr/home/myusername/config_sync/
中做了 git clone
:
git clone -l /etc etc@localhost<br>
git clone -l /usr/local/etc usr_local_etc@localhost<br>
这就是我认为我能做到的:
改变pf.conf;
运行 git add pf.conf;
运行 git commit -m 'comment'
运行sudo git push
但这就是正在发生的事情。虽然我没有更改 /etc 中的 pf.conf 文件中的任何内容,但 git 承认远程提交但认为本地副本是一个较新的版本,可以撤消我所做的一切。
例如,如果我在工作副本中添加“#test”行并将其推送到 /etc,这就是 sudo git diff master 在 /etc 中向我显示的内容。
diff --git a/pf.conf b/pf.conf<br>
index 31c4c68..76d693b 100644<br>
--- a/pf.conf<br>
+++ b/pf.conf<br>
@@ -1,5 +1,5 @@<br>
#MACROS<br>
-#test<br>
#Hello from origin#<br>
##Firewall Interfaces<br>
这是因为当您推送到 /etc 中的存储库时,您的更改会进入存储库而不是工作副本。推送更改后,您必须从存储库分支中检出最新文件,否则上游存储库中的工作副本将不会更新。
给定 /etc 中的主存储库和 /home/me/etc_clone 中的克隆,您的工作流程可能类似于:
$ cd /home/me/etc_clone
$ vim pf.conf #make changes
$ git add pf.conf
$ git commit -m "updates"
$ sudo git push
$ cd /etc
$ sudo git checkout -- . #sync working copy with index
我刚找到一份新工作,我的职责之一是管理几个 FreeBSD 机器 运行ning PF 作为数据包过滤解决方案。防火墙过去由一个人管理,但现在我们是 3 个人,可能同时修复相同的配置文件。我想使用 git 来处理本地副本中的更改请求,并在完成后将更改推送到服务器。这会给我:版本控制、快速回滚和冲突管理。 我启动了一个虚拟机进行测试,这是我到目前为止所做的。
运行 git init
在 /etc
和 /usr/local/etc
内
为两个本地回购在 /usr/home/myusername/config_sync/
中做了 git clone
:
git clone -l /etc etc@localhost<br>
git clone -l /usr/local/etc usr_local_etc@localhost<br>
这就是我认为我能做到的:
改变pf.conf;
运行 git add pf.conf;
运行 git commit -m 'comment'
运行sudo git push
但这就是正在发生的事情。虽然我没有更改 /etc 中的 pf.conf 文件中的任何内容,但 git 承认远程提交但认为本地副本是一个较新的版本,可以撤消我所做的一切。
例如,如果我在工作副本中添加“#test”行并将其推送到 /etc,这就是 sudo git diff master 在 /etc 中向我显示的内容。
diff --git a/pf.conf b/pf.conf<br>
index 31c4c68..76d693b 100644<br>
--- a/pf.conf<br>
+++ b/pf.conf<br>
@@ -1,5 +1,5 @@<br>
#MACROS<br>
-#test<br>
#Hello from origin#<br>
##Firewall Interfaces<br>
这是因为当您推送到 /etc 中的存储库时,您的更改会进入存储库而不是工作副本。推送更改后,您必须从存储库分支中检出最新文件,否则上游存储库中的工作副本将不会更新。
给定 /etc 中的主存储库和 /home/me/etc_clone 中的克隆,您的工作流程可能类似于:
$ cd /home/me/etc_clone
$ vim pf.conf #make changes
$ git add pf.conf
$ git commit -m "updates"
$ sudo git push
$ cd /etc
$ sudo git checkout -- . #sync working copy with index