Добавление ретроспективных тегов в Git? - PullRequest
2 голосов
/ 07 февраля 2012

Так что, в отличие от некоторых вопросов по миграции SVN, я перехожу на Git из системы контроля версий «всего лишь несколько папок на моей машине» (или ее нет; я инженер по контролю качества, команда разработчиков)время от времени присылайте мне zip-файл, не смейтесь слишком сильно ..:).

Я зафиксировал последний код, но у меня также есть куча «тегов», то есть я сделал копиюпроекта в отдельную корневую папку сразу после развертывания в рабочей среде.

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

Все выглядит примерно так (несколько упрощенно):

DuckProject
  DuckProject 1.2
    R1
    R2
    R3    
  DuckProject 1.3
    R1
    R2
  DuckProject 1.4
    R1
    R2
    R3  <- copied elsewhere as '../GitHub/DuckProject' and uploaded to GitHub

  Tags
    DuckProject 1.2 tag  <- want to upload and mark as a tag
      R3
      R3_BINARY.TAR
    DuckProject 1.3 tag  <- want to upload and mark as a tag
      R2
      archived_binaries
        r2_debugbinary.zip
        r2_releasebinary.zip

Так что в основном я хочузагрузите папки с тегами 1.2 и 1.3 в GitHub, но на самом деле не волнует отслеживание изменений между версиями тегов или даже относительно HEAD.Но я забочусь о отслеживании изменений с 1.4 R3 и далее до 1.4 1.4 и т. Д., Которые должны быть помечены, в идеале таким образом, чтобы это разумно соответствовало «ретроспективным» тегам.

Итак (учитываяНе забывайте, что я все это собираюсь!) Какой лучший способ сделать это с Git?

1 Ответ

1 голос
/ 07 февраля 2012

Вы можете создать их как коммиты без родителя, а затем пометить их, используя git tag. Это будет соответствовать тегам в новых версиях, созданных также с использованием git tag.

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

  1. создать временную ветку без родителя

    git checkout --orphan tmp
    
  2. зафиксируйте файлы из архива во временную ветвь (кажется, вам придется очистить после предыдущей ветки, используя git rm -f, прежде чем делать это)

  3. пометить коммит

    git tag v1.2
    
  4. вернуться в master ветку

    git checkout master
    
  5. удалить временную ветку

    git branch -D tmp
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...