Я знаю, что могу сделать мелкий клон, указав флаг --depth
. Однако это значение принимает целое число. Есть ли способ иметь идентичное поведение с datetime
? Я не хочу клонировать весь репозиторий и проверять предыдущее состояние.
Возможно ли сделать неглубокий клон git на основе datetime?
Ответ 1
Почему да. По крайней мере, только с Git 2.11 (Q4 2016)
См. commit cccf74e, совершить 079aa97, commit 2997178, commit cdc3727, commit 859e5df, совершить a45a260, commit 269a7a8, зафиксировать 41da711, совершить 6d43a0c, совершить 994c2aa, commit 508ea88, commit 569e554, commit 3d9ff4d, совершить 79891cb, зафиксировать 1dd73e2, зафиксировать 0d789a5, commit 45a3e52, зафиксировать 3f0f662, commit 7fcbd37, совершить 6e414e3 (12 июня 2016 г.) Nguyễn Thái Ngọc Duy (pclouds
).
Помощник: Duy Nguyen (pclouds
), Эрик Саншайн (sunshineco
) и Junio C Hamano (gitster
).
(слияние Юнио С Хамано - gitster
- в совершить a460ea4, 10 октября 2016 года)
git clone
теперь включает в себя:
--shallow-since=<date>:
Создайте мелкий клон с историей по истечении указанного времени.
Формат даты должен быть одним из форматов представленных в git log
.
Хотя тесты показывают необработанные даты:
cd shallow-since &&
GIT_COMMITTER_DATE="100000000 +0700" git commit --allow-empty -m one &&
GIT_COMMITTER_DATE="200000000 +0700" git commit --allow-empty -m two &&
GIT_COMMITTER_DATE="300000000 +0700" git commit --allow-empty -m three &&
git clone --shallow-since "300000000 +0700" "file://$(pwd)/." ../shallow11 &&
git -C ../shallow11 log --pretty=tformat:%s HEAD >actual &&
echo three >expected &&
test_cmp expected actual
"сырая дата" означает: дата в секундах с эпохи (1970-01-01 00:00:00 UTC), затем пробел, а затем часовой пояс в качестве смещения от UTC (a + или - с четырьмя цифры, первые два - часы, а вторая вторая - минуты).