2015-02-18 3 views
0

Я пытаюсь создать подмножество git repo с длинным списком с тегами, соответствующими официальным выпускам. Например, ver-0 на ver-99, где у нас есть только юридическое разрешение для подмножества предыдущих версий (например: от ver-0 до ver-95).git: удаление помеченного содержимого репо

Удаления последней версии тегов в репо является простым, однако содержание связанно с ныне удаленными тегами должны быть удалено из репозитория для поддержания строгого соответствия с нашими правовыми ограничениями (среда корпоративного развития + юристы = this_crap).

Я не могу найти пути после удаления последних тегов для удаления коммитов, связанных с удаленными тегами. Установка одиночного главного ответвления через git reset --hard [sha-1 of ver-95] последовала за по git prune -v --expire=now, я ожидал найти коммиты и blobs, однозначно связанные с тегами более поздней версии, которые будут найдены обвисшими и удаленными. Однако это не так. В случае пример a git log [sha-1 of ver-99] все еще находит линию ver-99 в репо.

Кто-нибудь знает о способах достижения вышеуказанного или поочередно объяснить, почему коммиты/blobs, связанные с удаленными тегами , не считаются болтающимися?

+0

Я обнаружил после удаления вышеуказанного тега и сброса головы в конечную версию, выполняя клон из репо, объекты-осиротевшие (+/-) объекты не существуют в новом репо. Это оставляет тайну в том, почему объекты не были очищены от первоначального репо с помощью чернослива. Существует ли метод определения для данного объекта того, какие ссылки существуют на нем? Похоже, что это поможет пролить свет на зависимости в таких сценариях, как это. – mmcmac

ответ

1

Использование «git prune -v --expire = now» удаляет только свободные объекты старше «сейчас». Вы, вероятно, работать только

git prune -v 
+0

Старое, чем «сейчас», на самом деле то, что я здесь. IIRC разрезает по умолчанию истечение осиротевших объектов gt/eq в течение двух недель. – mmcmac

0

Чтобы получить только абсолютное минимальное содержание, необходимое для конкретных работ, принесите их в чистый репозиторий:

git init --template='' some/new/spot 
cd !$ 
git fetch your/old/repo tag1 tag2 tag3 etc 

awk '{print "git",$2,$3,$1}' .git/FETCH_HEAD \ 
| cat # sh -x 

и копировать любые другие метаданные вы хотите через (.git/config, любые крючки и т. д.) вручную.

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