자료 창고/Tools

git --mirror 이전하고 git clone 시 용량 다름? (+셀프 삽질 결론)

sonhc 2024. 8. 29. 12:29

오래된 PC의 git 소스를 새로운 PC의 git 서버로 이전 작업하고 있습니다.

git 이전은 아래와 같이 진행했습니다.

1. old 서버에서 mirror 클론

  • $ git clone --mirror ssh://git@192.168.1.10/test/old.git
  • $ cd old.git
  • $ git remote set-url --push origin ssh://git@192.168.1.20/test/new.git
  • $ git push --mirror 

2. new 서버와 old 서버의 git clone 수행

  • $ git clone ssh://git@192.168.1.10/test/old.git
  • $ git clone  ssh://git@192.168.1.20/test/new.git 

3. 클론한 소스에서 .git 디렉토리 삭제

  •  ,git 제외한 실제 소스 파일 전체 용량/갯수 비교하려고

4. 디렉토리 파일갯수("find . -type f | wc -l"), 용량("du . --max-depth=0") 비교

상황 1) old 와 new 둘다 파일 갯수, 용량 다 동일함 = OK

상황 2) old 와 new 의 파일 갯수는 동일한데, 크기가 4, 8 ~ 28 byte 사이로 용량이 다름

  1. old의 파일 갯수는 128737개, 크기는 4,493,996 일 때,
    new의 파일 갯수는 128737개로 같지만, 크기가 4,493,992 으로 old 보다 new가 4 byte 작음
  2. old의 파일 갯수는 469644개, 크기는 10,955,984 일 때,
    new의 파일 갯수는 469644개로 같지만, 크기가 10,955,992 으로 old 보다 new가 8 byte 더 큼 
  3. old의 파일 갯수는 718128개, 크기는 39,176,060 일 때,
    new의 파일 갯수는 718128개로 같지만, 크기가 39,176,028 으로 old 보다 new가 32 byte 작음

?? 파일 갯수가 많을 수록 차이가 byte 차이가 4 ~ 최대 32 byte 까지 더 크게 차이아는 느낌?

?? 특정 파일 줄바꿈이 CR 이 CRLF 등으로 뭔가 추가되는게 있을까요? 모든 git 이전 작업은 ubuntu linux에서 진행해서 아닐것 같은데 ;;;

5. beyond compare 툴로 old 와 new 전체 비교

  •  위 3가지 예시 모두 beyond compare로 전체 bin/crc 비교하면 다 동일하다고 나음 -_-;;

 

git 히스토리도 함께 이전하려고 --mirror  옵션으로 old 에서 new로 이전한 상황인데
뭐 때문에 파일 용량이 완전히 일치하지 않고, 4~8, 최대 28 byte 까지 용량 차이가 발생하는지 궁금합니다.

beyond compare 로 비교 했을때 뭔가 다르다고 나와서, 파일 바뀐걸 찾아서 over-write 해주거나 할텐데
이렇게 beyond compare 에서 못잡아내는 상황이라면
혹시나 "du . --max-depth=0"  커맨드 결과값이 전체 용량을 제대로 표시하지 못하는 상황인건지...

git 이전하고 old/new 비교 검증시 용량이 다르게 표시되는 상황에 대해 
아시는분 계시면 조언 부탁 드립니다.

 

원문: https://www.clien.net/service/board/cm_app/18791011

 

git --mirror 이전하고 git clone 시 용량 다름? (+셀프 삽질 결론) : 클리앙

오래된 PC의 git 소스를 새로운 PC의 git 서버로 이전 작업하고 있습니다. git 이전은 아래와 같이 진행했습니다. 1. old 서버에서 mirror 클론 $ git clone --mirror ssh://git@192.168.1.10/test/old.git $ cd old.git $ git r

www.clien.net

 


참 이상합니다.
이게 git clone 할때마다 용량이 다른 느낌입니다.

10개넘는 프로젝트들 old/new 서버로 이전한 소스들 git clone 해서 용량/갯수 비교해보는 중인데
일전에 분명 용량/갯수 완전 동일하다고 표시했던 git repo 인데
오늘 다시 git clone 해서 비교해보니 4 byte가 다르다고 뜨네요. ;;

뭔가 git clone 할때마다 몇 byte 씩 용량이 달라 질 수가 있는건지....
지금까지 git clone 은 서버꺼 그대로 땡겨온다고 100% 믿고 있었는데
왜 git clone 할때마다 용량이 몇 byte씩 차이가 발생하는지 처음 보는 현상이라 당황 스럽네요.

git 소스 이전에 100% 완료된건지 git clone 해서 비교하는거 말고 뭘로 또 판단할 수 있을지 ;;;;
혹시나 싶어 오늘 삽질한 후기 코멘트로 남겨 봅니다.


최종 삽질 결과입니다.

그동안 git clone 받으면 항상 동일한 source가 받아진다고 생각했는데
git clone 받는다고 용량이 항상 100% 동일하지 않는걸 이번에 처음 알게 되었습니다.

결론! git clone 받을때마다 용량이 몇 byte 단위로 달라짐
(git --mirror로 old/new 서버 이전 과정에 파일이 변조된 문제 상황 아님)

// 삽질후기
1. git clone 을 10개 받음 (old 서버로 확인)

  • $ git clone ssh://git@192.168.1.10/test/old.git 0
  • $ git clone ssh://git@192.168.1.10/test/old.git 1
  • $ git clone ssh://git@192.168.1.10/test/old.git 2
  • $ git clone ssh://git@192.168.1.10/test/old.git 3
  • $ git clone ssh://git@192.168.1.10/test/old.git 4
  • $ git clone ssh://git@192.168.1.10/test/old.git 5
  • $ git clone ssh://git@192.168.1.10/test/old.git 6
  • $ git clone ssh://git@192.168.1.10/test/old.git 7
  • $ git clone ssh://git@192.168.1.10/test/old.git 8
  • $ git clone ssh://git@192.168.1.10/test/old.git 9

2. 0 ~ 9 디렉토리에 동일한 소스가 git clone 받아짐

3. 0 ~ 9 디렉토리의 .git 폴더 각각 삭제

4. 0 ~ 9 디렉토리 하나씩 파일 갯수/용량 체크

  • 갯수 체크 : find . -type f | wc -l
  • 용량 체크 : du . --max-depth=0 | cut -f 1

5. 동일한 repo를 git clone한 10개의 폴더 비교시, 용량이 100% 동일하지 않음 확인

  • 위에 첨부된 이미지 결과 확인
  • old 서버에서 같인 repo를 10번 받았는데, .git 삭제한 전체 소스 용량이 100% 동일하지 않음 ;;;;

 



[최종 확인]

와... 감사합니다.

--apparent-size 옵션 넣으니까 결과가 동일하게 떠주네요.
git 문제도 아니고, du 명령 미사용 user fault 였다니... 그동안 삽질한게 다 시간 낭비였다니.... ㅠ.ㅠ
구글링 도와주셔서 다시 한번 감사 드립니다.