Можно ли сделать мелкий клон git на основе datetime?
Я знаю, что могу сделать мелкий клон, указав --depth
флаг. Тем не менее, это принимает целое число в качестве значения. Есть ли способ иметь идентичное поведение с datetime
? Я не хочу клонировать весь репозиторий и извлекать предыдущее состояние.
1 ответ
Почему да это так. По крайней мере, только с Git 2.11 (4 квартал 2016 года)
См. Коммит cccf74e, коммит 079aa97, коммит 2997178, коммит cdc3727, коммит 859e5df, коммит a45a260, коммит 269a7a8, коммит 41da711, коммит 6d43a0c, коммит 994c2aa, коммит 508ea88, коммит 569e554, коммит 3d9ff4d2, коммит 1 9989, коммит 7989 45a3e52, коммит 3f0f662, коммит 7fcbd37, коммит 6e414e3 (12 июня 2016 г.) от Nguyán Thái Ngọc Duy ( pclouds
)
Помогает: Дуй Нгуен ( 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 (+ или - с четырьмя цифрами; первые два часа, а вторые два минуты).