git add-on - 두 저장소가 동일한지 확인하는 방법

git add-on - 두 저장소가 동일한지 확인하는 방법

다른 Git 첨부 파일 저장소에서 콘텐츠를 복제, 동기화 및 가져올 때 동일한 미러가 설정되었는지 어떻게 확인합니까?

과거에는 파일 간 비교를 수행하기 위해 unison과 같은 도구를 사용했지만 이는 시간과 메모리 집약적이었습니다.

온전성 검사를 수행할 수 있는 다른 옵션이 있습니까? 이에 대한 주된 동기는 기존 저장소를 복제했는데 크기가 더 작았기 때문입니다. 이전 저장소에 사용되지 않거나 참조되지 않은 개체가 있었기 때문에 더 작을 것으로 예상했지만 크기가 상당히 다릅니다.

그래서 실행할 수 있는지 확인하고 싶습니다.

답변1

git fsckGit에는 Git 메타데이터 구조의 일반적인 문제를 지적할 수 있는 온전성 검사( )가 내장되어 있습니다 . git gc매달린 것이나 기타 불필요한 것들을 제거하는 가비지 수집기( )도 있습니다 .

데이터 무결성에 관해서는...기본적으로 이것은 git에서 제공하는 보증이며, 입력한 데이터는 꺼내는 데이터입니다. git log(마지막 커밋의 해시라도) 동일 하면 데이터도 동일합니다. git의 모든 단계는 데이터, 메타데이터 및 이전 데이터에 대해 체크섬을 수행합니다. 이는 블록체인과 비슷합니다. 데이터가 어디에서든 변경되면 체크섬도 변경됩니다. 체크섬이 일치하지 않으면 git은 체크아웃 중에 많은 불만을 표시합니다.

Linus Torvalds는 Youtube에서 볼 수 있는 git(2007-2008?)에 대한 오래된 강연을 가지고 있으며, IIRC에서는 데이터 무결성 측면에 대해서도 이야기합니다. 다음은 추가 문서입니다.https://git-scm.com/book/en/Git-Internals-Git-Objects

사실 사람들은 이 문제를 git이 마술처럼 해결해주기 때문에 걱정하지 않습니다. 소스를 따라잡기 위해 변경 사항을 끌어오기/푸시/커밋해야 하는지 확인하려면 "git status"를 수행하면 됩니다.

추가 공간을 사용하는 데에는 다른 이유도 있을 수 있습니다. git stash사용해 본 적이 있다면 아마도 공간을 차지하고 있을 것입니다.

이는 또한 리포지토리 복제에 차이점이 있는 부분입니다. git은 커밋되지 않은 로컬 콘텐츠에 관심이 없습니다. 커밋되지 않으면 클론에 관한 한 존재하지 않습니다.

답변2

다음을 수행하여 gitannex가 예상대로 작동하는지 확인했습니다.

  1. .git 콘텐츠를 포함하여 정렬된 고유한 파일 목록을 가져옵니다(이렇게 하면 모든 git 첨부 파일 콘텐츠가 보장됩니다).
  2. .git 콘텐츠를 포함하여 정렬된 고유한 링크 목록을 가져옵니다(이렇게 하면 저장소 구조가 동일함을 보장합니다).
  3. 파일 목록 비교, 첨부 파일/전송 디렉터리 무시, git 개체는 다를 수 있으며 git 첨부 파일 내용은 동일해야 합니다.
  4. 연결된 목록을 비교하면 동일해야 합니다.
  5. gitannex fsck를 실행하거나 모든 파일의 체크섬을 비교하십시오(이것은 파일 시스템 문제입니다).

이것은 효과가 있지만 약간 힘들거나 시간 집약적일 수 있습니다. 또한 미러는 부분 복사본에 불과하므로 프로세스가 더욱 복잡해질 수 있습니다. 이 거울을 사용하면 기대하는 바를 비교할 수 있습니다.

관련 정보