2010-06-16 4 views
1

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

Допустим, мы теперь имеет:

  1. EcommerceApp (электронная коммерция основного приложение)
  2. Server-file-mgr компонент (компонент для просмотра/управления файлом на сервере)
  3. Mylib (библиотека полезные функции)
  4. a MailistApp (другое основное приложение для обработки списков рассылки)

...

  • EcommerceApp потребность как Server-file-mgr компонента и Mylib работать
  • Server-file-mgr потребности Mylib работать
  • MaillistApp потребности как Server-file-mgr компонентов и Mylib работать тоже.

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

trunk/EcommerceApp 
trunk/Server-file-mgr 
trunk/Mylib 
trunk/MaillistApp 

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

EcommerceApp 
|_ Mylib 
|_ Server-file-mgr 

MaillistApp 
|_ Mylib 
|_ Server-file-mgr 

Я имею в виду Mylib и Server-file-mgr потребности быть внутри папки EcommerceApp/MaillistApp.

Как бы вы тогда структурировали папку SVN, как я, или в другом/лучше/умнее? ???

EDIT: somoene в ответах ниже предложил структурировать SVN как папки реальной жизни, но тогда у меня было бы на SVN две копии одной и той же папки, я имею в виду, что у меня был бы багажник/EcommerceApp/Mylib и еще одна копия под trunk/MaillistApp/Mylib, как бы я их синхронизировать ???

ответ

4

Я бы предложил второй (как для реального живого). Но я бы предложил создать отдельные «Модули» для MyLib и Server-file-mgr (со своими собственными соединительными линиями/тегами/ветвями), если они используются где-то еще, кроме этого продукта, и использовать svn: externals для их объединения. Вы можете обрабатывать их как отдельные библиотеки.

EDIT:

trunk/ 
    EcommerceApp 
    |_ Mylib 
    |_ Server-file-mgr 

    MaillistApp 
    |_ Mylib 
    |_ Server-file-mgr 

Вы можете сделать следующее с SVN: внешнеположенности: Вы должны поместить их в папку/магистральный проекта.

Project/ 
    |_ trunk/ 
     |_ EcommerceApp (link to MyLib->tags/RELEASE-1.0) 
     |_ MaillistApp (link to Server-file-mgr->tags/RELEASE-1.0) 
    |_ tags 
    |_ branches 

MyLib/ 
    |_ trunk 
    |_ tags 
     |_ RELEASE-1.0 
    |_ branches 

Server-file-mgr/ 
    |_ trunk 
    |_ tags 
     |_ RELEASE-1.0 
    |_ branches 

Everytime вы создаете новую версию MyLib или Server-файл-MGR вы можете просто изменить SVN: внешние ссылки в проекте/стволе. Таким образом, у вас есть отдельная разработка для ваших компонентов.

+0

Спасибо, я знаю, что лучше, чтобы каждый из них был собственным сундуком, но я не хотел уменьшать ответное компромисс. Если я использую второй, так как вы предположили, что у меня будет на SVN две копии одной и той же папки, я имею в виду, что у меня будет сундук/EcommerceApp/Mylib и другая копия под туловищем/MaillistApp/Mylib, как бы я их синхронизировать? ? –

+1

Я говорил о svn: externals это не копия! – khmarbaise

+0

спасибо 'svn: externals' именно то, что я искал. К кому это может относиться по этой ссылке http://e-mats.org/2008/05/adding-an-external-svn-resource-with-tortoise/, они дают хорошее объяснение того, как использовать 'svn: externals' с TortoiseSVN –

0

Вы можете использовать символические ссылки (если вы используете Linux), если единственное требование - иметь доступ к ним локально из EcommerceApp и MaillistApp каталогов. SVN может правильно хранить символические ссылки.

trunk/EcommerceApp 
|- Mylib -> ../Mylib 
|- Server-file-mgr -> ../Server-file-mgr 
trunk/Server-file-mgr 
trunk/Mylib 
trunk/MaillistApp 
|- Mylib -> ../Mylib 
|- Server-file-mgr -> ../Server-file-mgr 
+0

Я не в Unix, и я использую Tortoise SVn без ссылки symbolyc. –

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