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 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 사이로 용량이 다름
- old의 파일 갯수는 128737개, 크기는 4,493,996 일 때,
new의 파일 갯수는 128737개로 같지만, 크기가 4,493,992 으로 old 보다 new가 4 byte 작음 - old의 파일 갯수는 469644개, 크기는 10,955,984 일 때,
new의 파일 갯수는 469644개로 같지만, 크기가 10,955,992 으로 old 보다 new가 8 byte 더 큼 - 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 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% 동일하지 않음 ;;;;
du의 apparent size 옵션을 확인해보시면 될 것 같습니다.
https://www.gnu.org/software/coreutils/manual/html_node/du-invocation.html#index-_002d_002dapparent_002dsize
[최종 확인]
와... 감사합니다.
--apparent-size 옵션 넣으니까 결과가 동일하게 떠주네요.
git 문제도 아니고, du 명령 미사용 user fault 였다니... 그동안 삽질한게 다 시간 낭비였다니.... ㅠ.ㅠ
구글링 도와주셔서 다시 한번 감사 드립니다.