Использование Subversion [закрыто]
-
03-07-2019 - |
Вопрос
Я только начинаю использовать «Subversion» с «Tortoise SVN client» для одного из моих проектов с открытым исходным кодом, который размещен в «Google Code».Я хотел бы получить некоторые рекомендации по его использованию.Я следую структуре папок по умолчанию (ствол, ветка, тег).Ниже приведены вопросы
- Когда вы проведете первоначальную регистрацию?Это только после завершения набора функций или с первого дня разработки?
- В какой каталог происходит первоначальная регистрация?Это в «магистраль» или вы регистрируетесь в «ветвь» и объединяетесь в «магистраль», как только функция будет завершена.В этом случае «ствол» будет пуст, пока функция не будет выполнена.
- Когда будут внесены изменения, будете ли вы подключаться к «транку» напрямую?В противном случае ваша рабочая копия всегда будет использовать каталог «ветви», верно?
Любая помощь будет оценена по достоинству.
Решение
Я рекомендую вам проверить ваши файлы, прежде чем начинать вносить в них серьезные изменения (заезжай пораньше, заезжай чаще).
Это зависит от того, некоторым людям нравится иметь багажник стабильный, работайте с ветвями, а затем объединяйте ветки обратно в ствол, когда функции будут готовы, но вы также можете выполнить фиксацию непосредственно в стволе.
Это также зависит от того, как вы будете работать и что вы хотите иметь в багажнике (последнюю стабильную версию или последнюю новейшую версию).
Другие советы
Я советую заезжать пораньше и часто.
Есть много способов сделать это, но наиболее распространенный, с которым я успешно работал, — это отработка ветки разработки и слияние с основной частью, когда вы достигаете стабильной точки (выпуски второстепенных версий, вехи и т. д.).
Если вы еще этого не сделали, ознакомьтесь с Красная книга, это отличный ресурс для информации о SVN.
Создавая новый проект с нуля, я обычно делаю это в пользовательской области SVN, например:
/svn/users/me/project1
это потому, что большинство проектов начинаются с выбрасываемых прототипов, и я редко использую для них ветки.Как только проект станет официальным и приблизится к выпуску первого «прототипа», я перенесу его в его собственный репозиторий.
/svn/project1/trunk
Использование ветвей требует некоторой дополнительной работы, поэтому мы не используем их, если в них нет необходимости.Это когда несколько человек работают над одним и тем же проектом и часто возникают конфликты, или я работаю над функцией, которую я могу решить отменить и выбросить.Если это сделано в ветке, я могу просто не объединять и просто удалить ее.
Все ответы предполагают, что вам следует заезжать пораньше и чаще, я не могу с этим согласиться.Вот и все, что я скажу по этому поводу.Однако я прочитал резюме так:Для каких целей подходит Subversion?Итак, вот ответ на этот вопрос.
Я читал о компаниях, использующих Subversion в качестве хранилища приложений.Итак, они сообщают серверу, что хотят установить версию X приложения Y.Затем сервер запускает обновление на сервере SVN.И они также хранили там файлы конфигурации.Любые изменения, внесенные в конфигурацию (через отдельный веб-интерфейс для конечных пользователей), затем фиксировались в репозитории конфигурации SVN.Это великолепно.Конечно, эти ребята использовали MS Power Shell на Win2k3, но эту технику можно применить и где-нибудь еще.
Заселяйтесь НЕМЕДЛЕННО, не раньше.Даже если вам больше нечего зафиксировать, кроме специального текстового файла, содержащего результаты мозгового штурма и какой-то ужасно загадочный псевдокод, зафиксируйте его.
Я (как и многие) нахожу проекты, подобные вашему, во время поиска кода или программы, которая делает то, что я хочу.Я прочитаю вашу главную страницу, а затем немедленно просмотрю ваш ствол SVN, чтобы увидеть, что вы делаете.
Если у тебя в багажнике нулевой код, я, скорее всего, вообще о тебе забуду.Если у вас есть хотя бы какой-нибудь файл, объясняющий предполагаемый дизайн, и некоторый псевдокод, я, скорее всего, начну присылать вам патчи, отражающие мои идеи.
Проект с пустым репозиторием кричит "зуд, который никогда не почешется"..так что нажмите что-нибудь, как только сможете.
После этого делайте коммиты часто.Мне нравится брать на себя множество небольших, упорядоченных обязательств, чтобы можно было легко отслеживать регрессии и откатывать/исправлять токсичные изменения.
Зарегистрируйтесь, как только вы создадите свой пустой базовая структура проекта/решения.Пусто, потому что в этом состоянии это на самом деле компилируемый хотя и нет рабочего кода.Принцип состоит в том, чтобы поддерживать весь проект (по крайней мере) в компилируемом состоянии на протяжении всего процесса разработки, поскольку команда постепенно и регулярно вносит в него коммиты. маленький изменения, так что сборка вряд ли сломается.
Не существует закона, требующего, чтобы первоначальная регистрация проводилась в Магистрале или Филиале.Вы можете запустить Trunk с пустым проектом, чтобы он был стабильным с самого начала, затем разветвиться для выполнения разработки и объединить его обратно в Trunk после завершения.Вы также можете вернуть пустой проект в ветку и разработать первую рабочую или базовую функцию, прежде чем объединять что-то существенное в ствол.В любом случае, исходя из пункта №1, багажник должен быть устойчивым и высокое качество.Добавляйте в багажник только высококачественный контент.
Опять же, нет строгого мандата на этот тип практики.Некоторые команды разветвляются все, даже простой рефакторинг изменений имен переменных.Некоторые команды даже не знают ветвления/слияния и разрабатывают все в одной ветке (Trunk).У каждой команды свой уровень баланса в этом вопросе.Мое личное правило: если появятся новые функции, исправлены серьезные ошибки или будет изменен дизайн, разверните их для тестирования.Если это незначительное исправление, например, ошибки в написании строк или отображение на веб-странице четырех десятичных знаков вместо двух, исправления копии Trunk должно быть достаточно.Конечно, интерпретации «важного» и «второстепенного» будут различаться, поэтому руководители разработчиков/групп должны установить свои стандарты.В любом случае должно быть модульные/интеграционные тесты, сопровождающие изменения чтобы убедиться, что ответвление или магистраль работают должным образом и без дефектов.Ключевое слово, которое следует всегда помнить, — «высококачественный, проверенный код».