2012-01-17 5 views
3

다음은 관찰 된 동작을 재현하기 위해 실행될 bash 명령을 설명합니다. 이들이 msysgit을 통해 실행되었지만 결과가 * nix 환경에서 유사해야합니다.로컬 파일을 전달할 때 "git clone"이 객체 데이터베이스를 압축하는 이유는 무엇입니까? /// url?

설정 소스 저장소

$ mkdir main && cd main 
$ git init . 
Initialized empty Git repository in d:/temp/main/.git/ 
$ echo a > a.txt 
$ git add . && git commit -m "Initial commit" 
[master (root-commit) e1ec355] Initial commit 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 a.txt 

복제 로컬 파일을 사용하여 소스 저장소 : /// URL

$ cd .. 
$ mkdir clonefromfileurl && cd clonefromfileurl 
$ git clone file:///d:/temp/main 
Cloning into 'main'... 
remote: Counting objects: 3, done. 
Receiving objects: 100% (3/3), done. 
remote: Total 3 (delta 0), reused 0 (delta 0) 

복제 로컬 파일 경로을 사용하여 소스 저장소

$ cd .. 
$ mkdir clonefrompath && cd clonefrompath 
$ git clone /d:/temp/main 
Cloning into 'main'... 
done. 

Wikipedia에 따르면, 파일 슬래시가있는 url은 로컬 리소스를 의미합니다.

그러나 로컬 file:/// URL을 통해 복제하면 개체 데이터베이스가 전송 (복사?)되기 전에 압축됩니다. 원본 저장소의 위치가 로컬 경로로 표시되는 경우에는 해당되지 않습니다.

왜 원본과 대상 저장소가 모두 localhost에 호스팅되어 있다는 점을 감안할 때 git는 다른 방식으로 동작합니까? 자식 클론 교재

답변

2

로컬 리포지터리

도 기본적 자식 지원은, 다음 문법이 이용 될 수있다 :

  • /path/to/repo.git/
  • file : ///path/to/repo.git/

앞의 두 가지 구문은 --local 옵션을 제외하고는 대부분 동일합니다. 당신이 file:///을 사용하는 경우

그래서, 당신이 명시 적으로 추가해야하는 --local 복제를 의미하지는 않습니다.

+0

답장을 보내 주셔서 감사합니다. 불행히도'git clone -l file : /// d :/temp/main' 또는'git clone --local file : /// d :/temp/main'을 사용하여 여전히 packfile을 처리하고 전송합니다. 이 문제를 재현 할 수 있습니까? – nulltoken