Реализация замораживания кода с Subversion - PullRequest
1 голос
/ 13 февраля 2009

Скажем, я работаю над проектом, и я знаю, что я закончил определенный класс и что его никогда не нужно редактировать снова, никогда. Как я могу заблокировать этот класс, чтобы больше не было коммитов? Я попытался заблокировать его, но это длится только один коммит и все еще позволяет мне редактировать его.


Рассуждение:
У меня есть класс, который выполняет одну вещь, и только одну вещь. Он управляет X частью базы данных. X не изменится, поэтому класс не должен будет меняться. Любые изменения могут быть опасными и приводить к ошибкам, которые не нужны. Для примера, это один класс в проекте, содержащий класс googol (1,0 x 10 ^ 100). Ветвление для одного второстепенного класса было бы слишком сложным, особенно если половина классов была бы такой, у вас получилось бы, по крайней мере, половина ветвей googol.

Ответы [ 7 ]

7 голосов
/ 13 февраля 2009

Создайте ветку всего вашего проекта - тогда вы сможете объединить будущие изменения из своей ствола, как и когда вы захотите их развернуть.

5 голосов
/ 13 февраля 2009

РЕДАКТИРОВАТЬ:

Исходя из ваших правок, если вы знаете, что это не изменится, тогда зачем об этом беспокоиться? Если вы не доверяете своим разработчикам, тогда возникает другая проблема, но из того, что я вижу, вы пытаетесь использовать контроль версий, чтобы «решить» то, чего на самом деле нет.

Я, как и многие другие, очень подозрительно отношусь к утверждению "без изменений".

Просто оставь все как есть.

две другие опции - это ловушки перед фиксацией или управление доступом через файл разрешений.

POST PRIOR ДЛЯ РЕДАКТИРОВАНИЯ:

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

Для ваших сборок вы можете просто вызвать определенную ревизию в "get"?

Создайте ветвь и используйте ее как единственную, которая будет использоваться постоянно.

Если вы добавите уведомления о фиксации фиксации, вы сможете получать уведомления об изменениях в ваших файлах, которые вам не нужны.

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

4 голосов
/ 13 февраля 2009

Возможно, вы сможете использовать ловушку перед фиксацией, которая отклоняет изменения определенных файлов при определенных условиях.

http://svnbook.red -bean.com / ен / 1,2 / svn.reposadmin.create.html # svn.reposadmin.create.hooks

2 голосов
/ 15 февраля 2009

Я бы не использовал управление исходным кодом для этого, вместо этого, если вы можете извлечь часть функциональности (включая этот класс), тогда вы могли бы создать отдельный проект из этого. Выходные данные этого проекта можно было бы затем включить в качестве библиотеки в ваш основной проект, то есть в Java я бы создал банку из нового проекта и включил ее в свой основной проект. Если / когда этот класс и связанные с ним классы изменятся, вы сможете заново создать библиотеку, но получите полный контроль над ней, когда решите включить эти изменения в основной проект.

2 голосов
/ 13 февраля 2009

Ну, для начала, основной ответ - вы не знаете, что определенный класс никогда не должен редактироваться снова. Поверьте мне, это будет.

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

Если вы хотите заморозить один файл, рассмотрите возможность использования свойства svn, чтобы пометить его.

1 голос
/ 13 февраля 2009

Обычно системы контроля версий не позволяют вам постоянно блокировать классы. Это имеет смысл, поскольку, если у вас есть ошибка, вам придется «разморозить» класс и т. Д.

Subversion позволяет вам либо пометить, либо разветвить ваш код. Пометка тегов позволяет вам вернуться к определенной версии вашего кода, а ветвление позволяет одновременно работать с несколькими версиями вашей программы. Оба позволяют вам «заморозить» код таким образом.

В больших проектах перед тем, как заморозить релиз, вы обычно переходите из HEAD и продолжаете вносить исправления ошибок в ветку (скажем, v1), что обеспечивает изоляцию от любой новой разработки, которая идет в HEAD для V2.

0 голосов
/ 16 февраля 2009

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

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