2016-07-31 4 views
2

git clone --depth <depth> <url> <repo>; git -C <repo> rev-list --count --all = <depth>Почему git неглубокий клон может иметь больше коммитов, чем <depth>?

git clone --depth <depth>: Создать клон с историей укороченным до <depth>совершающего. Подразумевает --single-branch.

Например: URL = https://github.com/vhf/free-programming-books.git, глубина = 10, то commit_count = 15

git version 2.9.0

+0

Какую версию Git вы используете? С 2.9.2 я получаю 15 для обоих rev-list (HEAD и -all) – VonC

+0

@ VONC меня тоже, но я ожидаю, что это будет 10. («HEAD! = -All» был вызван моей ошибкой, Я отредактировал это позже) – xged

+1

Я подозреваю, что окончательная глубина получена из удостоверения, что * все * элементы имеют по крайней мере 10 коммитов каждый. Для этого, поскольку каждая фиксация не всегда включает * все * файлы, вам иногда приходится идти глубже. – VonC

ответ

5

Мелкая версия хранилища включает в себя все коммиты в пределах определенного расстояния от филиала головы, когда следующие все возможные родители, а не только первый. Поэтому для нелинейной истории слияния счетчик не будет равен глубине.

$ git clone --depth 10 https://github.com/vhf/free-programming-books.git 
Cloning into 'free-programming-books'... 
remote: Counting objects: 85, done. 
remote: Compressing objects: 100% (63/63), done. 
remote: Total 85 (delta 31), reused 46 (delta 22), pack-reused 0 
Unpacking objects: 100% (85/85), done. 
Checking connectivity... done. 

$ git -C free-programming-books/ rev-list --count HEAD 
15 

$ git -C free-programming-books/ log --graph --oneline --decorate 
* b9ffc8e (HEAD -> master, origin/master, origin/HEAD) Adding pt_BR C book used by ... 
* 824c1d3 Replaced Google Python style guide dead-link with new one (#1987) 
* 3c32612 Added Laravel: Code Smart online book (#1986) 
* eabce2c Fixed typo: Structure and Interpretation (#1985) 
* aab83e5 Added IRPF90 gitbook to Misc section (#1984) 
* 6f72509 Added a bash tutorial in free-courses-en.md (#1983) 
* 9b95b09 Merge branch 'pr/1980' 
|\ 
| * 2811cd3 Fix blank lines 
| * bbe9bd6 Adds 2 golang podcasts (and fixes missing #ggulp) 
| * fdeabc6 (grafted) Fix ordering 
* da317ad Merge branch 'pr/1976' 
|\ 
| * 20b940a Fix ordering 
| * 9a6ee0b (grafted) Add openHPI to list of MOOCs 
* 43294d1 Update link Rust by Example #1970 (#1995) 
* d758a93 (grafted) Fix a broken link to 'Practical PostgreSQL' (#1994) 

Псевдо-корень совершает в этой усеченной истории являются d758a93, 9a6ee0b и fdeabc6. Все они являются предками 9-го поколения головы.


Оригинальный ответ (до того, как при условии MVCE)

Это может быть в случае с местными клонов, когда <url> не начинается с file://. Затем мерзавец выдает соответствующее предупреждение:

warning: --depth is ignored in local clones; use file:// instead. 

Для местных клонов Git просто создает жесткие ссылки на объекты в хранилище исходного кода (если не указан переключатель --no-hardlinks, но последний еще не делает местные клоны уважают вариант --depth) , Клонирование посредством жесткой привязки позволяет экономить дисковое пространство и очень быстро по сравнению с копированием всех объектов. Поскольку целью опции --depth является сокращение передачи данных, это не имеет большого смысла для локальных клонов и поэтому игнорируется.

+0

Я не получаю предупреждение – xged

+0

Commit_count меняется с изменением глубины. Поэтому глубина не игнорируется. – xged

+0

@xged См. Обновленный ответ – Leon