У меня возникли проблемы с извлечением файлов с использованием тега выпуска и надеюсь, что кто-то здесь может помочь.
В основном мой репозиторий имеет такую структуру
module1
- src
- jsp
- conf
module2
- src
- jsp
- conf
Релиз может содержать изменения либо в module1, либо в module2, либо в обоих.Есть несколько разработчиков, которые могут работать с любыми файлами в любом из модулей.
Для работы над новым выпуском мы извлекаем последний выпуск (например, LIVE-REL-2.4), используя следующую команду
cvs checkout –r “LIVE-REL-2.4” moduleName
Обратите внимание, что мы не извлекаем из trunc.Причина этого в том, что если вы извлекаете из trunc, вы включаете файлы, которые были зарегистрированы другими разработчиками, но вы не хотите включать их в следующий выпуск.
После того, как мы проверили последнюю версию, мы вносим изменения и возвращаемся в новые файлы.Для доставки мы помечаем все новые файлы, которые мы отметили, специальным тегом ошибки.
cvs tag BUG434 <file1>
cvs tag BUG435 <file2>
Затем мы применяем новую метку к каждому файлу в текущем выпуске.
cvs tag – r “LIVE-REL-2.4” “LIVE-REL-2.5”
Затем мы добавляем новый тег выпуска для новых файлов, которые мы проверили в
cvs tag –r “BUG434” “LIVE-REL-2.5”
cvs tag –r “BIG435” “LIVE-REL-2.5”
Вышеуказанное гарантирует, что новый выпуск будет включать в себя все файлы из «последней».поставленный релиз »плюс исправления ошибок, которые мы хотим включить в релиз.Чтобы оформить заказ на новую версию, мы просто делаем это
cvs checkout –r “LIVE-REL-2.5” moduleName
Оформление из вышеперечисленного проверено и доставлено.Хотя есть некоторая путаница относительно того, действительно ли этот процесс работает.Мы неожиданно заставили людей жаловаться, что они не могут регистрировать новые файлы, если проверяют по тегам.Сгенерированная ошибка показана ниже
sticky tag `LIVE-REL-2.5' for file `DatabaseFacade.java' is not a branch
Я читаю эту ошибку, но не могу найти ее решение.Исходя из того, что я нашел в поиске, можно найти следующие решения:
- запустить «cvs update -A» для этих файлов, чтобы вернуть рабочую копию в заголовок.
Это не будет работать для меня, потому что я не хочу выпускать изменения, которые находятся на "голове".Ревизия, которую я хочу выпустить, является обновленной версией предыдущего выпуска.Тот, что на «HEAD», может быть тем, который кто-то обновил, и он не должен быть выпущен для следующих 3-х выпусков.
- Тег нужно превратить в ветку
Хотел бы я это сделать, но я не могу убедить любого из моих боссов, что мы должны поддерживатьветвления.Мы не поддерживаем это, потому что это, очевидно, делает вещи намного сложнее, чем они должны быть.
- Запретить пользователям проверять файлы, которые не готовы к доставке в следующем выпуске.
Это может сработать, так как я смог бы просто извлекать из 'HEAD' каждый раз, когда выходит новый релиз.
Теперь мои вопросы действительно следующие:
- Можно ли как-нибудь оформить заказ, используя описанную выше процедуру, не сталкиваясь с ошибкой "прикрепленный тег не является веткой"?
- Есть ли лучший способ, с помощью которого я могу выполнить те же шаги, что и выше, без необходимости использования ветвления?
- Похоже, это одна из самых распространенных ситуаций в среде разработки.Как другие люди делают это без использования ветвления?
- И, наконец, если у вас есть какие-либо знания о Subversion, знаете ли вы, работает ли он так же, и у меня будут те же проблемы, если я перейду на Subversion?
Любая помощьс благодарностью.