Я ищу аргументы, чтобы убедить клиента, что он никогда не должен вносить изменения в тег после его создания.
Здравый смысл кажется недействительным аргументом, поэтому мне нужно что-то более существенное.
Я ищу аргументы, чтобы убедить клиента, что он никогда не должен вносить изменения в тег после его создания.
Здравый смысл кажется недействительным аргументом, поэтому мне нужно что-то более существенное.
Теги существуют как копии исходного кода в определенный момент времени - независимо от изменений, которые вы могли бы внести в Trunk или любые папки Branch, вы всегда сможете вернуться к коду, как это было, когда тег была создана копия.
Если вы совершаете тегированные теги, они больше не представляют источник в точке, где была создана копия, поэтому их мало смысла. Ваш клиент должен быть связан с багажником или с веткими.
Пользователи, которые используют проект, могут использовать определенную помеченную версию вашего кода. Они знают, что их код работает с тегом, который вы указали, и с радостью выйдет на основе этого предположения. Если вы измените тег, тогда код пользователя может сломаться. Тег буквально таков: это стабильная веха, на которой другой пользователь может рассмотреть камень.
Кроме того, если в проекте более одного разработчика, они будут работать с trunk
. Когда они обновляются, они не будут получать изменения, которые были сделаны в теге, что вызовет огромную проблему слияния.
Тег должен указывать на некоторую существующую ревизию во времени. Вы в основном даете этой ревизии имя, т.е. Тег. В SVN тег является только копией в каталоге/тегах, поэтому коммитинг возможен, но это просто деталь реализации. Ничто не мешает вам совершать, но это необычно, и люди, использующие тег, могут быть смущены что именно этот тег представляет... оригинальную версию при создании тега или новые изменения. В конце концов, все дело в том, чтобы сообщить о ваших намерениях.
В других системах теги просто указывают на конкретную ревизию. Вы можете создать новую ветку из помеченной ревизии, но тег остается указывать на оригинальную версию.
При пометке версии, может быть трудно предсказать, если вам нужно будет вернуться к этой версии и внести изменения. Иногда вы хотите, чтобы вы создали ветку вместо тэга, но чаще всего ветвь переполнена.
Может быть, вы можете убедить своего клиента взять другой подход, совершить тэг и сделать ветку (которую многие опасаются).
Сначала создайте локальную копию тега, затем внесите необходимые изменения (локально), и зафиксируйте результат как новый тег. Если новая версия требует нескольких коммитов, вы можете присвоить новому тегу название проекта - просто, чтобы убедиться, что никто не ошибается в этом теге для готовой версии, - и когда все фиксации сделаны, переименовать новый тег до конечного имени. (Я считаю, SVN позволяет переименовывать теги, хотя я никогда не делал этого.)
Старый пост, но, как и другие, возможно, он его прочитает, я добавлю два цента:
В предыдущих ответах все полагаются на здравый смысл, о котором вы говорите, клиент не отвечает. Попробуйте эту историю: "Тег похож на съемку семейной фотографии на свадьбе. Вы не вытащили бы свой постоянный маркер, чтобы добавить тетушку Лизу к картине, не так ли? Если вы хотите нарисовать, вместо этого используйте лист бумаги (= ветвь)"
В качестве побочного примечания было бы интересно узнать, почему клиент хочет передать тег. Мне гораздо легче спорить, зная, чего пытается достичь коллега, и о нуждах, стоящих за этим.
Хорошо.. что, если у вас есть блестящие сотрудники, которые делают теги, которые серьезно раздуты версии кода, полные временных файлов и т.д., которые абсолютно не нужны?! Я думаю, что удаление мусора и возвращение обратно к тегу в порядке.. до тех пор, пока есть комментарий об этом (комментарий будет иметь отметки времени, и я предполагаю, что любое изменение тега также будет иметь временную метку, поэтому довольно легко найти комментарии примерно в это время). Конечно, если вы крупная компания или серьезно профессиональная, хорошо структурированная и красная лента (мы нигде не находимся рядом), то это совсем другая история.