Как я могу получить функциональность svn: externals в режиме "только для чтения"?
svn: externals могут быть полезны для всасывания центральных библиотек или IP в проект, чтобы они могли храниться в одном месте, доступном для всех.
Но если я обращаюсь к людям с внешними тегами общего IP-адреса (поэтому он не изменяется на них), это открывает возможность непреднамеренного совершения изменений в теге.
Как я могу сделать svn: externals read-only? Это приемлемо, если есть какой-то дополнительный аргумент или какой-то способ сделать внешний, который мы можем добавить к процедуре для всех, чтобы следовать.
Ответы
Ответ 1
Использование svn-репозиториев, чтобы избежать перехода на специальные диски, например. теги
Если вы используете соглашение об именах ttb (trunk, tags, branches) и код для доступа только для чтения svn: внешний доступ находится в каталогах тегов, вы можете использовать крюк предварительной фиксации, чтобы избежать коммитов в эти каталоги.
Вот подробности:
SVN pre-commit hook для исключения изменений в подкаталогах тэгов
Ответ 2
Сделать внешние репозитории доступными только для чтения всем, кроме сопровождающих.
Ответ 3
Фактически, TortoiseSVN обнаруживает, что вы пытаетесь зафиксировать тег через фиксацию фиксации и предупреждает пользователя об этом, что в основном удовлетворяет моему требованию в отношении скорости. Итак, мы уже хорошо знаем.
Ответ 4
Сделать внешние репозитории доступными только для чтения всем, кроме сопровождающих.
Я полностью согласен J. Джон отвечает выше. Создание крючка предварительной фиксации является излишним. svn: externals (это просто ссылка на внешний репозиторий, отсюда и название), и поэтому он все еще находится в отдельном репозитории (вы можете убедиться, что, перейдя на извлеченный внешний код и сделайте 'svn info | grep URL'), так просто поместите необходимое разрешение в это внешнее репо. Что-то вроде:
[external_repo]
@maintainer = rw
@others = r
И из repo (позвольте называть это repoA), где это определено как "внешнее" (позвольте внешнему репо как repoB), вам не нужно ничего делать. Когда кто-то (кроме человека, входящего в @maintainers) пытается совершить внешнее репо через код, который он или она проверил из repoA, commit будет направлен на внешний repoB и, следовательно, разрешение, которое вы устанавливаете как-то вроде выше на том, что репо будет вставлять и блокировать фиксацию.
Надеюсь, что эта помощь поможет понять.
Исмаэль Казимпан:)