2011-02-07 2 views
2

У нас есть проект, который разбит на два. Один для внутреннего и один для внешнего.SVN Общие папки для заказа

Разница между двумя версиями - это один xml-файл и несколько файлов css.

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

Так что я мог бы сказать два файла css, называемые common.css и site.css. Common.css - это общий файл css, а site.css отличается между двумя версиями.

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

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

Кто-нибудь знает, как я могу это сделать в SVN, чтобы я мог проверить общую папку, а затем папку с версией?

ответ

3

Создайте общий репозиторий с общим кодом, затем создайте из него два ветви SVN, в которых находятся определенные файлы.

Конечно, никогда не объединяйте конкретные файлы ветвей в общий репозиторий.

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

mkdir myproject/common/ 
vim myproject/common/common_file.html 
mkdir myproject/common/css 
svn import myproject svn://here/myproject 

mkdir myproject/external myproject/internal 
svn add myproject/external myproject/internal 
svn copy myproject/common/css myproject/external/ 
svn copy myproject/common/css myproject/internal/ 
svn ci -m "Created external & internal css sub-branches" 

mv external.css specific.css files.css myproject/external/css/ 
mv internal.css specific.css files.css myproject/internal/css/ 
svn add myproject/external/css 
svn add myproject/internal/css 
svn ci myproject/external/css myproject/internal/css -m "Added external & internal specific files" 

Где-то еще, для того, чтобы работать над внутренним проектом, например:

svn checkout svn://here/myproject/common/ . 
svn switch ./css svn://here/myproject/internal/css 
vim ./common_file.html 
svn ci -m"I'm an internal user and I worked on a common file" 
vim ./css/files.css 
svn ci -m"I worked on the specific file files.css of the internal branch" 
+0

Не уверен, что я сделал это правильно. У меня есть папка css, и я создал ветку, называемую common, и поместил в нее pommon css. Затем я создал еще две ветки, от корня, которые содержали папку css и помещали в нее файлы css версии. но я не могу проверить версии css-папок в главном, поскольку svn не позволяет это. я подозреваю, что это не то, что вы просите меня сделать правильно? – griegs

+0

Я добавил несколько команд svn, чтобы немного разъяснить. Его переключатель 'svn', чтобы папка css указывала на другое место (проверка выполняется только для всей копии локали) – Pierre

+0

На самом деле я не уверен, что это хорошее решение, если у вас есть определенный файл в ** в той же папке **, что и обычная: поскольку невозможно переключить один файл, это нереализуемая ситуация (или постоянное слияние между ветвями и туловищем, чтобы синхронизировать их ...). Может быть, кто-то может помочь?Может быть, переключиться на Гит? :-) – Pierre

1

СВН: внешние свойство было бы полезно здесь, если я понимаю, что вы пытаетесь сделать.

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

Поместите общий код в свой собственный каталог, а затем поместите каждую версию (внутреннюю внешнюю внешнюю) файлов xml и css в отдельные каталоги.

В каждый каталог xml и css добавьте свойство svn: externals, которое указывает на общий каталог. Затем, когда вы проверяете какой-либо каталог, вы получаете копию общей директории кода в дереве. Измененный код можно также вернуть обратно в репозиторий.

Смежные вопросы