젠투 리눅스를 사용하는데 다소 복잡한 구성입니다. 내 질문은 구성 파일을 버전 제어하는 데 git을 사용하는 것이 현명한 것입니까?
내 집에 git repos가 있습니다 ./home/**을 .gitignore에 넣으면 문제가 발생하지 않습니다.
설명 업데이트 :
git를 사용하여 "/"루트 디렉토리에서 시스템 레벨 구성 파일을 버전 제어하는 것이 현명한 방법입니까?
젠투 리눅스를 사용하는데 다소 복잡한 구성입니다. 내 질문은 구성 파일을 버전 제어하는 데 git을 사용하는 것이 현명한 것입니까?
내 집에 git repos가 있습니다 ./home/**을 .gitignore에 넣으면 문제가 발생하지 않습니다.
설명 업데이트 :
git를 사용하여 "/"루트 디렉토리에서 시스템 레벨 구성 파일을 버전 제어하는 것이 현명한 방법입니까?
답변:
귀하의 질문에 대한 짧은 대답은 예 입니다.
구성 파일을 추적하기 위해 Git (또는 다른 버전 제어 소프트웨어)을 권장하는 것을 망설이지 않습니다. 그렇게 한 후, 나는 생산성을 높이고 (특히 새 설치를 구성 할 때) 내 구성 파일에 대해 더 큰 확신을 갖게되었습니다. 버전 관리를 통해 어떤 변화가 만들어졌다를하고는 메시지가 이유를 제공 커밋 왜 변경이되었다합니다. 변경으로 인해 의도 치 않은 부작용이 발생하면 로그 / 기록을 쉽게 검토하여 어떤 변경이 영향을 미쳤는지 확인할 수 있습니다.
개인적으로, /
루트 디렉토리 에있는 모든 파일을 추적하는 것에주의를 기울일 것 입니다. 무시할 경로 목록이 커지고 다루기 어려워 질 수 있습니다. 각 논리 파일 세트를 자체 저장소에 보관하는 것을 선호합니다.
수동으로 Git을 사용하여 Vim 구성, Bash 기능, 별칭 등과 같은 개인 구성 / 시동 파일 을 추적 합니다. git으로 $ HOME을 추적 하는 방법에 나열된 방법과 비슷합니다 . 각 파일 세트를 자체 저장소에 보관하고 홈 디렉토리에 대한 기호 링크를 사용합니다.
들어 시스템 구성 파일, 내가 함께 힘내를 사용 Etckeeper 내에서 파일을 추적하는 /etc
디렉토리.
주의해야 할 한 가지 문제는 추적중인 파일에 하드 링크가 포함되어 있는지 입니다. Git을 사용하여 파일을 체크 아웃하거나 작업 트리를 수정하면 파일 을 연결 해제 한 다음 다시 만듭니다. . 자세한 설명은 Git, Dotfiles 및 Hardlinks 를 참조하십시오 .
Etckeeper는 / etc에 대한 변경 사항의 전체 히스토리를 유지하는 데 사용될 수 있습니다. 수정본 제어 시스템이 일반적으로 지원하지 않는 파일 메타 데이터를 추적하지만 /etc
권한은/etc/shadow
.
apt 및 yum과 같은 패키지 관리자에 연결하고 (기본 구성으로) 설치 전 및 설치 후를 실행하여 모든 변경 사항을 /etc
추적합니다.
패키지가 설치 또는 제거되면 / etc에서 커밋되지 않은 모든 변경 사항이 패키지 작업 전에 커밋되므로 두 가지 커밋이 있습니다.
데비안 및 Red Hat 기반 배포판에서 사용했으며 아치 패키지 관리를 지원한다는 것을 알고 있습니다. 젠투 시스템에 얼마나 많은 자동화를 추가 할 수 있는지는 알 수 없지만 패키지를 사용할 수 있습니다 .
또한 구성 파일을 원격 저장소 (물론 개인용이어야 함)로 푸시하는 것을 지원합니다 .
패키지를 설치 한 후 /etc/etckeeper/etckeeper.conf
우분투 시스템에서 기본 버전 제어 시스템을 Git에서 Bazaar로 변경 ( 예 : 패키지)해야합니다 . 매일 자동 커밋 을 비활성화 할 수도 있습니다. .
매일 cron 작업으로 변경 사항을 자동으로 커밋 할 수 있습니다. . 저장소가 여러 개의 자동 커밋 메시지로 인해 혼란 스러울 수 있으므로 성 가실 수 있습니다.
적절한 줄을 주석 해제하십시오 /etc/etckeeper/etckeeper.conf
.
sed -i '/AVOID_DAILY_AUTOCOMMITS/s|^#* *||' /etc/etckeeper/etckeeper.conf
편집하다 /etc/.gitignore
추적하지 않아야 할 파일을 지정하도록 .
구성 후 다음 명령을 실행하십시오.
sudo etckeeper init
sudo etckeeper commit "Initial commit"
현재 디렉토리가 etc
인 경우 일반 git
명령을 실행할 수 있습니다 ( 예 :
sudo git status
sudo git log
etckeeper
매일 커밋하는 동안 실제로 /etc
"불량" 인지 여부 , 즉 커밋되지 않은 파일이 있는지 먼저 확인 합니다. 그렇지 않으면 커밋되지 않습니다. 커밋 로그에 매일 커밋이 가득 찬 경우 파일에 추가하지 않은 매일 변경된 파일이있을 가능성이 있습니다 .*ignore
:-)
bzr init
--__--를 수행하는 성가신 경향이 있습니다 ... 설치 후 항상 실행하는 것이 좋습니다 etckeeper uninit -f
.
git을 사용하여 홈 디렉토리의 특정 영역을 추적합니다. 개인적으로, 나는 루트 디렉토리를 추적하는 길을 따라 가지 않을 것이지만, 나는 당신의 야망에 감탄한다고 말해야합니다. :)
아마도이 경험 모음은 당신이 무엇을 얻을 수 있는지에 대한 더 나은 아이디어를 제공 할 수 있습니다.
리눅스 루트 디렉토리에서 자식 저장소를 초기화하는 효과 : 3)
단지 코멘트에 링크를 던지는 대신 "답변"에 대한 사과; 그러나 충분한 담당자는 아니지만 차임하기를 원했습니다.
편집하다
와! @AnthonyGeoghegan의 매우 좋은 답변. 나는 이것이 원래 상상했던 것만 큼 힘들지 않다고 믿는다.
또한 git
을 저장하고 유지 하는 데 사용 dotfiles
하지만 git bare repository
. 자세한 안내는 여기를 참조하십시오 . 두 개의 리포지토리를 사용하고 있습니다. 하나는 내 사용자 도트 파일 myconf
이고 다른 하나는 루트의 도트 파일 rootconf
입니다.
또한 여러 시스템, 다른 Linux 배포 또는 가상 시스템에서 두 구성을 모두 사용할 수 있습니다. 고유 한 구성을 위해 새 분기를 작성하십시오. 그런 다음 동일한 파일에서 코드를 섞지 마십시오 (예 .bash_alias
:) : 현재 시스템을 더 이상 확인해야한다면 성가신 일이 없습니다. 링크가 필요 없습니다!