Существует ли способ легко преобразовать серию tarballs исходного дерева в репозиторий мерзавца?

Я плохо знаком с мерзавцем, и у меня есть умеренно большое количество еженедельника tarballs из длительного проекта. Каждый tarball имеет в среднем несколько сотен файлов в нем. Я ищу стратегию мерзавца, которая позволит мне добавлять расширенное содержание каждого tarball в новый репозиторий мерзавца, начинающий с версии 1.001 и проходящий версию 1.650. С этого этапа проекта 99,5% tarball (n) является просто копией версии (n-1) - другими словами, идеальный кандидат на мерзавца. Желаемый конечный результат состоит в том, чтобы иметь только основное ответвление, остающееся в конце процесса.

Я думаю, что знаю, что мерзавец достаточно хорошо делает это "вручную". Насколько я понимаю нет никакой возможности конфликта слияния, так как не будет никакой возможности изменить ведущее устройство, прежде чем следующая версия будет добавляться и фиксироваться. Сценарий оболочки является моим первым предположением, но я не уверен, как хорошо удару понравится он, когда контроль мерзавца branch_n будет обработан, в то время как удар выполняется в branch_n-1. В целях этого проекта серверной средой является Ubuntu 10.4, доступными ресурсами являются 8 ГБ RAM, бесплатное Дисковое пространство на 500 ГБ и 4 процессора CPU в 3.ghz.

Мне не нужен кто-то еще для решения проблемы, но я мог использовать пошаговое перемещение в правильном направлении относительно того, как эксперт мерзавца приблизится к нему. Любой совет от кого-то, кто был "там сделан, что" будет цениться.

Hotei

PS: Я посмотрел на предложенные "связанные вопросы сайта" и ничто не нашел релевантным.

8
задан Hotei 3 May 2010 в 17:19
поделиться

4 ответа

Относительно этого комментария:

Я не уверен, насколько хорошо bash понравится, когда git checkout branch_n обрабатывается, пока bash выполняется в branch_n-1

Вас беспокоит, что две операции выполняются одновременно и мешают друг другу? Это не должно быть проблемой, если вы намеренно не запускаете операции параллельно.

Если предположить, что тарболлы следуют линейной эволюции, ветвление вообще не должно происходить.

Процесс должен быть довольно простым:

  1. git init
  2. untar ball _n_
  3. git add --all.; git commit (с соответствующими флагами)
  4. git tag -a v1.001 -m «Версия 1.001.»
  5. rm -rf * (для обработки удалений в истории; вы хотите оставить. git без изменений, конечно)
  6. goto 2
3
ответ дан 5 December 2019 в 12:08
поделиться

Не будучи именно там, вы должны просто:

  • распаковать архив в любом месте,
  • синхронизировать его с рабочим каталогом git, чтобы:
    • изменить соответствующий файл
    • добавить новые файлы из этого архива в рабочий каталог
    • удалить файлы из рабочего каталога, которые не являются частью текущего архива
  • git add -A
  • git commit -m "archive n"
  • repeat

Идея состоит не в том, чтобы проверить branch_n + 1, а в том, чтобы оставаться в той же ветке, фиксируя каждое содержимое tar одно за другим в одной ветке одного и того же репозитория git.
Если у вас действительно два параллельных процесса, вы можете:

  • git clone первый репозиторий git
  • git branch -b a_new_branch , чтобы убедиться, что вы изолировали их параллельный процесс в своей ветке, который вы сможете вернуть к первому репо, когда закончите.
1
ответ дан 5 December 2019 в 12:08
поделиться

Что бы я сделал в этой ситуации, поскольку у вас есть тарбалы, которые в конечном итоге являются 'tagged versions':

  1. создать пустой git-репозиторий
  2. извлечь тарбалы в этот каталог, перезаписав все файлы
  3. добавить все файлы git add .
  4. git commit -a -m 'version foo'
  5. git tag current version
  6. remove all files
  7. повторите шаг 2 для каждого тарбала

В вашем случае нет необходимости создавать ответвления, так как все ваши тарбалы являются отдельными, последовательными версиями; каждая итерация перезаписывает предыдущую.

2
ответ дан 5 December 2019 в 12:08
поделиться

Взгляните на $ GIT_SRC_DIR / contrib / fast-import / import-tars.perl

8
ответ дан 5 December 2019 в 12:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: