추적 설정을 위해 / (루트)에 Git 저장소를 만드시겠습니까? 사용할 수

그래서 Git을 주로 개발 목적으로 사용하지만 우분투 설치시 가지고있는 설정 파일 버전을 저장하는 데 사용할 수 있음을 깨달았습니다.

내가 제안한 설정은 다음과 같습니다.

  • git init 레포 /

  • 추적하려는 특정 설정을 제외한 모든 파일을 무시 하는 .gitignoreat /를 추가하십시오 .

    예를 들어,는 .gitignore( source )를 포함 할 수 있습니다 .

    ## Ignore everything...
    *
    
    ## Except...
    !/etc/default/tlp
    !/etc/crontab
    
  • 저수준 설정을 변경할 때마다 추적 할 수 있습니다.

이 설정에 문제가 있습니까? 커널에 항상 /특정 폴더 만 있으면됩니까? 응용 프로그램의 기능을 망칠 수 있습니까?



답변

두 질문 모두에 대한 답변은 아니요 /입니다. 에서 원하는 디렉토리를 만들 수 있습니다 . 유일하게 일어날 수있는 것은 내가 생각할 수있는 일부 공간 경로와 관련된 일부 권한 문제입니다.

그러나 .git디렉토리를 다른 곳에 저장하는 것이 좋습니다 .

git --git-dir=/home/user/backup-root --work-tree=/

여기를 읽으 십시오 .


답변

사실, 당신은 아마에서 버전 관리 설정 파일에 원하는 /etc/(루트 디렉토리의 항목에 대해 걱정하지 않는다 /특히 디렉토리처럼, proc또는 usrbin에서 /당신이 설치할 수 있도록) etckeeper패키지

또한 선택한 하위 디렉토리 /usr/share/applications/를 언급 한 것처럼 버전 제어 할 수도 있습니다 .

그러나 우분투 패키지 관리 시스템을 망설이지 마십시오 . 아마도 현재 설치된 패키지 목록을 백업해야 할 것입니다.


답변

git repo를 가지고 있거나 잘 작동하지만 문제가있는 낮은 수준의 git repo가있을 때 알아 차리기가 어렵다는 것을 제외하고는 잘 작동합니다.

참고 : 작업이 적고 ‘debsum’을 사용하는 것이 더 유용 할 것입니다

sudo apt-get install debsums

바이너리 또는 구성 파일의 변경 사항을 신속하게 감지 할 수 있습니다.

설치된 패키지의 예로는 업스트림 패키지와 다른 패키지가 있습니다.

$ sudo debsums -c
/boot/vmlinuz-4.10.0-19-generic

다음을 사용하여 변경된 구성 파일 목록을 얻을 수 있습니다.

$ sudo debsums -ec
debsums: missing file /etc/default/chromium-browser (from chromium-browser package)
 /etc/libvirt/libvirt.conf
 <snip>

크롬 브라우저가 제대로 패키지되지 않고 존재하지 않는 패키지 파일 목록에 파일이 어떻게 나열되어 있는지 확인하십시오.

/var/lib/dpkg/info/chromium-browser.list

이것은 dpkg 데이터를 사용하며 큰 /.git 디렉토리 및 워크 플로우를 피합니다.


답변

그래서 나는 다른 답변을 탐색하고 나에게 맞는 절차를 찾았습니다.

  • 확인 .gitignore/. Git이 하위 폴더에서 화이트리스트 파일을 처리하는 방식 때문에 생각보다 훨씬 복잡했습니다. 내가 사용 링크는 나를 도와.

    ## Source: https://stackoverflow.com/a/29932318/4900327
    ## Comments are on new lines because trailing whitespace matters in Git (stackoverflow.com/a/8865858/4900327)
    
    # Blacklist all files, folders and subfolders in the same directory as the .gitignore file.
    /*
    # Do not blacklist the .gitignore file.
    !.gitignore
    
    # Now whitelist certain files.
    # For files in subfolders, some hoops must be jumped through (stackoverflow.com/a/16318111/4900327):
    
    ## Whitelisting files in /etc/ folder:
    # Whitelist the /etc/ folder (the git repo folder is whitelisted always)
    !/etc/
    # Blacklist all files in /etc/ folder.
    /etc/*
    # Whitelist specific file(s) in /etc/ folder.
    !/etc/crontab
    
    
    ## Whitelisting files in /etc/default/ folder:
    # /etc/ is already whitelisted, and its contents blacklisted.
    # Whitelist /etc/default/ folder.
    !/etc/default/
    # Blacklist all files in /etc/default/ folder.
    /etc/default/*
    # Whitelist specific file(s) in /etc/default/ folder.
    !/etc/default/tlp
    
    
    ## Whitelisting files in /home/USERNAME/ folder:
    # Whitelist /home/ folder.
    !/home/
    # Blacklist all files in /home/ folder.
    /home/*
    # Whitelist /home/USERNAME/ folder.
    !/home/USERNAME/
    # Blacklist all files in /home/USERNAME/ folder.
    /home/USERNAME/*
    # Whitelist specific file(s) in /home/USERNAME/ folder
    !/home/USERNAME/.bash_profile
    !/home/USERNAME/.bashrc
    
  • 이동 /및 실행 git init .지금까지, 나는 저장할 수 없었습니다 .git/사용하여 다른 디렉토리에 폴더를 @Ravexina 언급 링크를 .

  • 실행 git add .git status. Git이 추적하고있는 모든 설정 파일 목록이 표시되어야합니다.

    If you used the above `.gitignore`, it should track `/etc/crontab`, `/etc/default/tlp`, `/home/USERNAME/.bash_profile`, and `/home/USERNAME/.bashrc`.
    
  • 로 커밋합니다 git commit -m "Initial settings files".

  • git log -p -- path/to/file또는로 변경 사항을 추적 할 수 있습니다 gitk path/to/file. 이에 대한 자세한 내용은 여기를 참조하십시오 .


답변

/etc/shadowgit repo에 민감한 것들 (예 :)을 저장하려는 경우 기본적으로 객체에 권한이 444있고 디렉토리에 권한이 있기 때문에 모든 사용자가 읽을 수 없도록해야합니다 0755. 당신의 허가를 변경할 수 있습니다 .git에를
700 나에 넣어/root

또 다른 문제는 git이 파일 시스템과 같은 파일 권한을 저장하지 않으며 확장 속성을 저장하지 않는다는 것입니다. 파일의 경우 git은 파일이 실행 가능한지 여부 만 저장합니다. 따라서 삭제 된 파일을 복원하려는 경우 해당 소유자와 그룹은 루트가되고 (루트로 사용하는 경우) 권한은 644또는 755입니다. 소유자가 루트가 아닌 서비스 구성 파일에 문제가있을 수 있습니다.