Я думаю, что соглашение, которое обычно соблюдается, таково:
Тем не менее, несколько других моментов для запоминания:
new YourClass(){};
означает class [Anonymous] extends YourClass {}
new YourInterface(){};
означает class [Anonymous] implements YourInterface {}
Я чувствую, что больший вопрос остается открытым, какой из них использовать и когда? Хорошо, что в основном зависит от того, с каким сценарием вы сталкиваетесь, но чтение ответа, данное @jrudolph, может помочь вам принять какое-то решение.
использование структуры репозитория ответвления/соединительной линии/тега является довольно стандартным, но если я понимаю Вас правильно, Ваша проблема - то, что у Вас есть ряд общих dll проектов, которые привыкают через несколько проектов. Это может определенно стать хитрым для управления.
Таким образом, типичный сценарий здесь - то, что у Вас есть некоторая библиотека классов под названием Общий. Помощники, который имеет код, который характерен для всех Ваших приложений.
Скажем, я запускаю новое приложение под названием StackOverflow. Сеть, которая должна сослаться Распространенный. Помощники.
Обычно то, что Вы сделали бы, создают новый файл решения и добавляют новый проект под названием Stackoverflow. Сеть и добавляет существующее Общее. Проект помощников и затем ссылается на него от нового Stackoverflow. Веб-проект.
То, что я обычно пытаюсь сделать, создают репозиторий для Общего. Проект помощников и затем в подверсии ссылается на него как на внешнее. Тем путем можно сохранить код при управлении исходным кодом в единственном месте, но все еще использовать его отдельно в нескольких проектах.
если Ваши подпроекты могут быть выпущены в различных версиях (как средства управления, веб-части, ect...) затем, может иметь смысл создавать Вашу структуру как это:
Решение
Проект 1
- Ответвление
- Теги
- Соединительная линия
Проект 2
- Ответвление
- Теги
- Соединительная линия
Таким образом, можно справиться с каждым выпуском проекта независимо.
Иначе наиболее распространенная структура:
- Ответвление
- Теги
- Соединительная линия
- Документы (дополнительно)
Я храню все в репозитории для упрощения разработчикам (или восстановил devboxes) к контролю от SVN, и затем выполните сборку (со всеми необходимыми блоками в относительных путях). Если у Вас есть несколько проектов, которые должны быть отдельными, это также поощрило бы команду Ваших совместно используемых компонентов поставлять высококачественные блоки. Это могло следовать за нормальным выпуском к производственному менталитету, где общий assemblied будет обновлен в Ваших нисходящих проектах. Это - очень естественная Стоимостная цепочка программного обеспечения, за счет определенного дискового пространства.
У мирового судьи Boodhoo есть большой ряд по теме автоматизированных сборок, структуры папок VS и встающих разработчиков и работающий быстро.
Репозитории подверсии типичны подразделенный на:
branch/
tags/
trunk/
Вы или поместили бы весь свой DLL и проекты приложения в соединительную линию и затем использовали бы ответвление и теги для всех них по мере необходимости также:
branch/
tags/
trunk/
project1/
project2/
С другой стороны, Вы могли создать папки для каждого проекта в корне и затем поместить общее ответвление, теги и соединить папки магистралью в них.
project1/
branch/
tags/
trunk/
project2/
branch/
tags/
trunk/
Обратите внимание, что эта практика является просто конвенцией, и ничто в SVN не требует (или действительно продвигает), выполнение его точно этот путь. Однако все привыкли к нему. Так, Вы сделали бы людям одолжение для продвижений.
Для разработки далее соединительная линия - то, где основная разработка произойдет. Когда Вы хотите отметить конкретный пересмотр (например, версия выпуска), затем просто svn копируют проект в каталог тегов. Кроме того, просто скопируйте код в каталог ответвления, когда Вы захотите сделать что-то поразительное или длительное и не захотите препятствовать прогрессу соединительной линии. Позже Вы можете svn объединять Ваше ответвление назад в соединительную линию, когда это готово к действию!
Если Вы хотите исправить неудачи в своем текущем репозитории Subverion, то просто используют перемещение svn для перемещения их. В отличие от удаления и добавляют процесс CVS, перемещение сохранит историю версий для нового местоположения.
Благодаря всем, кто ответил. lomaxx, я провел утро, изучая использование внешней функции, и похоже, что это - способ пойти. Я не знал о нем, вероятно, потому что это не является точно видным у Черепахи.
Если Вы хотите использовать отслеживание слияния Подверсии 1.5 больше чем по одному проекту одновременно, необходимо использовать единственное дерево без внешнего облика.
Отслеженное слияние (точно так же, как фиксация) всегда по каталогу и его детям.
То же правило применяется на атомарные фиксации. (Работы, только стабильные в единственном workingcopy. Это могло бы работать в некоторых определенные другие случаи, но то поведение не гарантируется),