Лучший способ структурировать репозиторий в Подверсии для проектов Visual Studio?

Я думаю, что соглашение, которое обычно соблюдается, таково:

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

Тем не менее, несколько других моментов для запоминания:

  • Классы верхнего уровня и статический вложенный класс семантически одинаковы, за исключением того, что в случае статического вложенного класса он может статически ссылаться на частные статические поля / методы его класса Outer [parent] и наоборот.
  • Внутренние классы имеют доступ к переменным экземпляра окружающего экземпляра класса Outer [parent]. Однако не все внутренние классы включают экземпляры, например внутренние классы в статических контекстах, например анонимный класс, используемый в статическом блоке инициализации.
  • Анонимный класс по умолчанию расширяет родительский класс или реализует родительский интерфейс, и нет дополнительного предложения для расширения любого другого класса или реализации каких-либо дополнительных интерфейсов. Таким образом, new YourClass(){}; означает class [Anonymous] extends YourClass {} new YourInterface(){}; означает class [Anonymous] implements YourInterface {}

Я чувствую, что больший вопрос остается открытым, какой из них использовать и когда? Хорошо, что в основном зависит от того, с каким сценарием вы сталкиваетесь, но чтение ответа, данное @jrudolph, может помочь вам принять какое-то решение.

12
задан Gilles 'SO- stop being evil' 11 August 2011 в 15:53
поделиться

6 ответов

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

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

Скажем, я запускаю новое приложение под названием StackOverflow. Сеть, которая должна сослаться Распространенный. Помощники.

Обычно то, что Вы сделали бы, создают новый файл решения и добавляют новый проект под названием Stackoverflow. Сеть и добавляет существующее Общее. Проект помощников и затем ссылается на него от нового Stackoverflow. Веб-проект.

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

4
ответ дан 2 December 2019 в 21:25
поделиться

если Ваши подпроекты могут быть выпущены в различных версиях (как средства управления, веб-части, ect...) затем, может иметь смысл создавать Вашу структуру как это:

Решение
Проект 1

  • Ответвление
  • Теги
  • Соединительная линия

Проект 2

  • Ответвление
  • Теги
  • Соединительная линия

Таким образом, можно справиться с каждым выпуском проекта независимо.

Иначе наиболее распространенная структура:

  • Ответвление
  • Теги
  • Соединительная линия
  • Документы (дополнительно)
0
ответ дан 2 December 2019 в 21:25
поделиться

Я храню все в репозитории для упрощения разработчикам (или восстановил devboxes) к контролю от SVN, и затем выполните сборку (со всеми необходимыми блоками в относительных путях). Если у Вас есть несколько проектов, которые должны быть отдельными, это также поощрило бы команду Ваших совместно используемых компонентов поставлять высококачественные блоки. Это могло следовать за нормальным выпуском к производственному менталитету, где общий assemblied будет обновлен в Ваших нисходящих проектах. Это - очень естественная Стоимостная цепочка программного обеспечения, за счет определенного дискового пространства.

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

0
ответ дан 2 December 2019 в 21:25
поделиться

Репозитории подверсии типичны подразделенный на:

branch/
tags/
trunk/

Вы или поместили бы весь свой DLL и проекты приложения в соединительную линию и затем использовали бы ответвление и теги для всех них по мере необходимости также:

branch/
tags/
trunk/
    project1/
    project2/

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

project1/
    branch/
    tags/
    trunk/

project2/
    branch/
    tags/
    trunk/

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

Для разработки далее соединительная линия - то, где основная разработка произойдет. Когда Вы хотите отметить конкретный пересмотр (например, версия выпуска), затем просто svn копируют проект в каталог тегов. Кроме того, просто скопируйте код в каталог ответвления, когда Вы захотите сделать что-то поразительное или длительное и не захотите препятствовать прогрессу соединительной линии. Позже Вы можете svn объединять Ваше ответвление назад в соединительную линию, когда это готово к действию!

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

9
ответ дан 2 December 2019 в 21:25
поделиться

Благодаря всем, кто ответил. lomaxx, я провел утро, изучая использование внешней функции, и похоже, что это - способ пойти. Я не знал о нем, вероятно, потому что это не является точно видным у Черепахи.

0
ответ дан 2 December 2019 в 21:25
поделиться

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

Отслеженное слияние (точно так же, как фиксация) всегда по каталогу и его детям.

То же правило применяется на атомарные фиксации. (Работы, только стабильные в единственном workingcopy. Это могло бы работать в некоторых определенные другие случаи, но то поведение не гарантируется),

0
ответ дан 2 December 2019 в 21:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: