2015-04-24 1 views
1

Je viens de recevoir un nouvel emploi et un de mes est de gérer RESPONSABILITÉS deux boîtes FreeBSD en cours d'exécution PF comme une solution de filtrage de paquets. Les firewalls étaient gérés par une seule personne, mais maintenant nous sommes 3 gars qui fixent les mêmes fichiers de configuration en même temps. Je veux utiliser git pour pouvoir travailler sur des demandes de changement dans une copie locale et pousser les changements sur le serveur quand j'ai fini. Cela me donnerait: le contrôle de version, les restaurations rapides et la gestion des conflits. J'ai mis le feu à une machine virtuelle pour les tests et voici ce que j'ai fait jusqu'à maintenant.Problèmes d'utilisation git pour le contrôle de version pf.conf

course git init intérieur /etc et /usr/local/etc fait un git clone intérieur /usr/home/myusername/config_sync/ pour les prises en pension locales:

git clone -l /etc [email protected]<br> 
git clone -l /usr/local/etc [email protected]<br> 

Thats ce que je pensais que je pouvais faire:

changement pf.conf; run git add pf.conf; run run git commit -m 'comment' sudo git push

Mais voici ce qui se passe. Bien que je n'ai rien changé dans le fichier pf.conf dans/etc, git reconnaît le commit distant mais considère que la copie locale est une version plus récente qui annule tout ce que j'ai fait. Par exemple, si j'ajoute la ligne '#test' dans ma copie de travail et que je la place dans/etc, voici ce qu'un maître sudo git diff me montrerait dans/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> 

Répondre

0

En effet, lorsque vous poussez jusqu'à votre pension dans/etc vos modifications vont dans le référentiel pas dans la copie de travail. Vous devez extraire les derniers fichiers de la branche du référentiel après avoir poussé vos modifications, sinon la copie de travail dans votre repo amont ne sera pas mise à jour.

Étant donné une prise en pension de maître dans/etc, et un clone dans/home/moi/etc_clone, votre flux de travail pourrait être quelque chose comme:

$ 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 
+0

Merci John, C'est ce que je prévois de faire. Gardez toujours une branche appelée production comme répertoire de travail de/etc, poussez les changements à master, puis fusionnez le en production. – bananabr