2012-01-17 4 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 

Clone хранилище исходных текстов с использованием локального файла: /// 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) 

Clone хранилище исходных текстов, используя локальный путь к файлу

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

Согласно Wikipedia, URL-адрес файла с тройной косой чертой подразумевает местный ресурс.

Однако при клонировании по локальному адресу file:/// база данных объектов упакована перед передачей (копируется?). Это не тот случай, когда местоположение исходного репозитория выражается как локальный путь.

Почему git ведет себя по-разному, учитывая, что и исходный, и целевой репо размещены на localhost?

ответ

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' все еще обрабатывает и передает пакетный файл. Можете ли вы воспроизвести это поведение? – nulltoken

 Смежные вопросы

  • Нет связанных вопросов^_^