Как бы вы организовали репозиторий Subversion для проектов программного обеспечения для дома?

Я работаю в компании, чей основной бизнес не связан с программным обеспечением. Большая часть документации для использования источника управления написана командой разработчиков, предназначенной для коммерческих проектов или проектов с открытым исходным кодом. Как кто-то, кто пишет в домашнем программном обеспечении, я могу сказать, что работа выполняется иначе, чем в коммерческой или открытой исходной настройке. Кроме того, существуют хранимые процедуры и сценарии базы данных, которые необходимо синхронизировать с кодом.

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

Ответ 1

Настройка SVN-репозиториев может быть сложной только в том смысле, как вы их организуете. Прежде чем мы установим SVN, я на самом деле RTFM'd онлайн Руководство по Subversion, в котором обсуждаются организационные методы для репозиториев и некоторые из ошибок, о которых вы должны думать в заранее, а именно то, что вы не можете сделать после того, как создали свои репозитории, если решите передумать. Перед настройкой я предлагаю пройти через это руководство.

Для нас, как консультантов, мы создаем обычную и внутреннюю разработку программного обеспечения, а также некоторое управление документами через SVN. Нам было интересно создать один репозиторий для каждого клиента и один для себя. В каждом репозитории мы создавали папки для каждого проекта (программное обеспечение или другое). Это позволило нам сегментировать доступ к безопасности через репозиторий и клиент и даже по проекту в репозитории. Идя глубже, для каждого программного проекта мы создали "рабочие", "теги" и "ветки". Обычно мы помещаем релизы в теги с использованием "release_w.x.y.z" в качестве тега для стандартного.

В вашем случае, чтобы синхронизировать sprocs, скрипты и другие связанные документы, вы можете создать папку проекта, затем под этой "рабочей" папкой, затем под этим "кодом" и рядом с ней "скрипты", и т.д. Затем, когда вы помечаете рабочую версию для выпуска, вы в конечном итоге помещаете ее все вместе.

\Repository
   \ProjectX
      \Working
         \Code       
         \Scripts
         \Notes       
      \Tags
      \Branches

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

Мы запускаем SVN в Windows вместе с WebSVN, который является отличным средством просмотра репозитория с открытым исходным кодом. Мы используем его, чтобы предоставить клиентам веб-доступ к их коду, и все это зависит от базовой безопасности Subversion. Внутри мы используем TortoiseSVN для управления репозиториями, фиксации, обновления, импорта и т.д.

Другое дело, что обучение следует считать неотъемлемой частью вашего развертывания. Пользователям, знакомым с контролем версий, может быть трудно понять, что происходит. Мы обнаружили, что предоставление им функциональных инструкций (делать это при создании проекта, делать это при обновлении и т.д.) Было очень полезно, когда они изучали концепции. Мы создали репозиторий "песочницы", в котором пользователи могут играть все, что захотят, с документами и папками для практики, вы можете найти это полезным, а также поэкспериментировать с тем, какие политики устанавливать.

Удачи!

Ответ 2

Для subversion существует Assembla, который поставляется с Trac и других полезных инструментов. Это бесплатно или вы можете заплатить за аккаунт, если вам нужно больше места или пользователей на проект.

Ответ 3

Вы можете использовать службу, например www.unfuddle.com, для создания бесплатного хранилища SVN или GIT.

Мы используем Unfuddle, и это действительно здорово. Существуют бесплатные и платные версии (в зависимости от ваших потребностей).

Или вы могли бы, конечно, создать локальную копию. Для Google существует множество учебных руководств: http://www.google.com/search?rlz=1C1GGLS_enUS291&aq=f&sourceid=chrome&ie=UTF-8&q=set+up+svn

Ответ 4

Возможно, достаточно одного репозитория для ваших проектов. Мне нравится типичный подход, который индексирует макет по проекту (см. этот раздел из O'Reilly Subversion book):

/first-project/trunk
/first-project/branches
/first-project/tags
/another-project/trunk
/another-project/branches
/another-project/tags
/common-stuff/trunk
/common-stuff/branches
/common-stuff/tags

Имейте в виду, что вы всегда можете реорганизовать репозиторий позже.

Кроме того, для собственных вещей я предпочитаю FSFS для хранилища данных, в отличие от DB Berkeley. FSFS более устойчив, и скорость проверки не сильно беспокоит небольшие команды/проекты. Вы можете сравнить и решить для себя.

Другие стандартные части рецепта включают Trac и минимальный сервер Linux для размещения репозитория в локальной сети.

Ответ 5

После публикации этого вопроса я поговорил с коллегой, который предложил мне прочитать статью:

http://www.codinghorror.com/blog/archives/000968.html

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

Ответ 6

Для моей компании я использую svn + ssh и проверку подлинности на основе ключа. Вы можете сделать это с обоими клиентами Windows и клиентами linux. Это очень удобно использовать, как только вы получите свои ключи, так как вы используете ключ ssh для входа, а не для ввода пароля.

Здесь приведена статья о настройке svn + ssh с примечаниями по безопасности. Если вы поймете все это и выполните следующие действия, вы сможете начать хорошо.

В этой статье описывается ряд способов дальнейшей защиты ваших учетных записей ssh ​​для учетных записей svn.

Я рекомендую создавать учетные записи специально для доступа svn без другого доступа к этому серверу. Я предполагаю, что вы будете использовать ежедневную сборку или автоматизированный script, чтобы обновить сохраненные procs в db. Ежедневные сборки могут иметь свои собственные специальные учетные записи и собственные ключи ssh. Мне не нравится, когда мои автоматизированные инструменты запускаются с тем же именем пользователя, что и пользователь (поэтому я знаю, какой инструмент поврежден).

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

Удачи и наслаждайтесь преимуществами контроля источника!

Ответ 8

Как указано в этом потоке, распределенные VCS (git, Mercurial) являются лучшей моделью, чем централизованные, из-за упрощения создания ветки, нет необходимости в настройке специального сервера, нет необходимости иметь доступ к сети для работы и некоторые другие преимущества. Если вы будете работать в одиночку, DVCS позволит вам включать людей в ваши проекты, если возникнет такая необходимость.

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

Ответ 9

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

Проекты содержат все отдельные проекты или модули Релизы содержат теги релизов, которые включают в себя несколько модулей Пользователи имеют ветки частных пользователей Администратор содержит мои скрипты с крючками, сценарии резервного копирования и т.д.

Теги релиза полезны, если у вас есть продукт, состоящий из нескольких модулей, которые могут быть разными тегами для конкретной версии (одно кольцо для их привязки и все такое). Это облегчает создание условного депонирования и для разработки ссылок на то, что составило выпуск 1 или 2.