2011-02-16 3 views
10

필자는 원격 저장소에 푸시하고 싶은 일련의 커밋을 가지고 있지만 인터넷에 연결되어있는 데이터를 사용하고 커밋의 크기를 알고 싶습니다. 더 큰 데이터 뚜껑과 연결되어있는 지금 또는 나중에 밀어야할지 결정할 수 있습니다.푸시의 크기 찾기

중간에있을 때 얼마나 큰 밀림인지 알 수 있지만 실제로 밀기 전에 얼마나 큰지 알아낼 수있는 방법이 있습니까?

답변

10

종류 가능합니다.

$ echo $(git merge-base HEAD origin/master)..HEAD | git pack-objects --revs --thin --stdout --all-progress-implied > packfile 

당신이 원격 - - 날짜를 만들기 위해 보낼 필요가있는 데이터의 양의 아이디어를 줄 것이다 결과 packfile의 크기를 검사 : bash를 통해, 그리고 origin/master 가정하면 목표 지점입니다.

업로드 방법 크기를 알아 내려고 노력하면서이 접근법을 older answer에서 가져 왔습니다. 이론적으로 로컬에서 원격으로 변경된 커밋 범위를 알게되면 git에 해당 개체의 이름을 물어볼 수 있습니다 (재귀 문제는 다음과 같습니다). packfile을 생성해야하므로 해킹 비트입니다. 객체는 다른 객체를 참조 할 수 있음) 해당 객체의 크기를 집계합니다.

(다시, 또한 해당 객체 팩 파일을 생성 - 할 것이다 단지 git push 같은 -. 그래서 크기가 전송되는 것을 더 대표) 작업

당신이있는 경우 다른 개발자 당신이 푸시하고자하는 지점에서, 어떤 추정치가 문제가된다면, 알 수없는 양의 데이터를 전송하는 것을 의미하기 때문에 리모컨으로 들어가기 전에 git fetch을 실행해야 할 가능성이 있습니다!

+0

위대한 감사를 드렸습니다. 공동 작업 측면에서 주목 :이 경우 업로드 크기와 사용자가 제공 한 사용자 스토리가 고민했습니다. –

+1

또는 단지 크기를 바이트 단위로 얻으십시오 :'echo $ (git merge-base HEAD origin/master) .. HEAD | 자식 팩 객체 --revs --thin --stdout --all-progress-implied -q | wc -c' – kch