Вопрос

Я только начинаю использовать «Subversion» с «Tortoise SVN client» для одного из моих проектов с открытым исходным кодом, который размещен в «Google Code».Я хотел бы получить некоторые рекомендации по его использованию.Я следую структуре папок по умолчанию (ствол, ветка, тег).Ниже приведены вопросы

  1. Когда вы проведете первоначальную регистрацию?Это только после завершения набора функций или с первого дня разработки?
  2. В какой каталог происходит первоначальная регистрация?Это в «магистраль» или вы регистрируетесь в «ветвь» и объединяетесь в «магистраль», как только функция будет завершена.В этом случае «ствол» будет пуст, пока функция не будет выполнена.
  3. Когда будут внесены изменения, будете ли вы подключаться к «транку» напрямую?В противном случае ваша рабочая копия всегда будет использовать каталог «ветви», верно?

Любая помощь будет оценена по достоинству.

Это было полезно?

Решение

  1. Я рекомендую вам проверить ваши файлы, прежде чем начинать вносить в них серьезные изменения (заезжай пораньше, заезжай чаще).

  2. Это зависит от того, некоторым людям нравится иметь багажник стабильный, работайте с ветвями, а затем объединяйте ветки обратно в ствол, когда функции будут готовы, но вы также можете выполнить фиксацию непосредственно в стволе.

  3. Это также зависит от того, как вы будете работать и что вы хотите иметь в багажнике (последнюю стабильную версию или последнюю новейшую версию).

Другие советы

Я советую заезжать пораньше и часто.

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

Если вы еще этого не сделали, ознакомьтесь с Красная книга, это отличный ресурс для информации о SVN.

Создавая новый проект с нуля, я обычно делаю это в пользовательской области SVN, например:

/svn/users/me/project1

это потому, что большинство проектов начинаются с выбрасываемых прототипов, и я редко использую для них ветки.Как только проект станет официальным и приблизится к выпуску первого «прототипа», я перенесу его в его собственный репозиторий.

/svn/project1/trunk

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

Все ответы предполагают, что вам следует заезжать пораньше и чаще, я не могу с этим согласиться.Вот и все, что я скажу по этому поводу.Однако я прочитал резюме так:Для каких целей подходит Subversion?Итак, вот ответ на этот вопрос.

Я читал о компаниях, использующих Subversion в качестве хранилища приложений.Итак, они сообщают серверу, что хотят установить версию X приложения Y.Затем сервер запускает обновление на сервере SVN.И они также хранили там файлы конфигурации.Любые изменения, внесенные в конфигурацию (через отдельный веб-интерфейс для конечных пользователей), затем фиксировались в репозитории конфигурации SVN.Это великолепно.Конечно, эти ребята использовали MS Power Shell на Win2k3, но эту технику можно применить и где-нибудь еще.

Заселяйтесь НЕМЕДЛЕННО, не раньше.Даже если вам больше нечего зафиксировать, кроме специального текстового файла, содержащего результаты мозгового штурма и какой-то ужасно загадочный псевдокод, зафиксируйте его.

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

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

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

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

  1. Зарегистрируйтесь, как только вы создадите свой пустой базовая структура проекта/решения.Пусто, потому что в этом состоянии это на самом деле компилируемый хотя и нет рабочего кода.Принцип состоит в том, чтобы поддерживать весь проект (по крайней мере) в компилируемом состоянии на протяжении всего процесса разработки, поскольку команда постепенно и регулярно вносит в него коммиты. маленький изменения, так что сборка вряд ли сломается.

  2. Не существует закона, требующего, чтобы первоначальная регистрация проводилась в Магистрале или Филиале.Вы можете запустить Trunk с пустым проектом, чтобы он был стабильным с самого начала, затем разветвиться для выполнения разработки и объединить его обратно в Trunk после завершения.Вы также можете вернуть пустой проект в ветку и разработать первую рабочую или базовую функцию, прежде чем объединять что-то существенное в ствол.В любом случае, исходя из пункта №1, багажник должен быть устойчивым и высокое качество.Добавляйте в багажник только высококачественный контент.

  3. Опять же, нет строгого мандата на этот тип практики.Некоторые команды разветвляются все, даже простой рефакторинг изменений имен переменных.Некоторые команды даже не знают ветвления/слияния и разрабатывают все в одной ветке (Trunk).У каждой команды свой уровень баланса в этом вопросе.Мое личное правило: если появятся новые функции, исправлены серьезные ошибки или будет изменен дизайн, разверните их для тестирования.Если это незначительное исправление, например, ошибки в написании строк или отображение на веб-странице четырех десятичных знаков вместо двух, исправления копии Trunk должно быть достаточно.Конечно, интерпретации «важного» и «второстепенного» будут различаться, поэтому руководители разработчиков/групп должны установить свои стандарты.В любом случае должно быть модульные/интеграционные тесты, сопровождающие изменения чтобы убедиться, что ответвление или магистраль работают должным образом и без дефектов.Ключевое слово, которое следует всегда помнить, — «высококачественный, проверенный код».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top