使用git进行pf.conf版本控制的问题

时间:2015-04-24 15:12:05

标签: git bsd

我刚接到一份新工作,我的一个责任就是管理一些运行PF作为数据包过滤解决方案的FreeBSD盒子。防火墙曾经由一个人管理,但现在我们有3个人可能同时修复相同的配置文件。我想使用git能够处理本地副本中的更改请求,并在完成后将更改推送到服务器。这将给我:版本控制,快速回滚和冲突管理。 我启动了一个虚拟机进行测试,这是我到目前为止所做的。

git init/etc内运行/usr/local/etc 在本地回购中git clone/usr/home/myusername/config_sync/

 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会确认远程提交,但认为本地副本是一个较新的版本,可以撤消我所做的一切。

例如,如果我添加&#39; #test&#39;在我的工作副本内部并将其推送到/ 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>

1 个答案:

答案 0 :(得分:0)

这是因为当您在/ etc中推送到repo时,您的更改将进入存储库而不是工作副本。推送更改后,您必须检查存储库分支中的最新文件,否则上游存储库中的工作副本将无法更新。

在/ 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