2014-09-08 3 views
4

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

ProjectOne : 
file : src/main/projectone.main : 
-> /** This file is part of ProjectOne... **/ 
-> contentA 

ProjectTwo : 
file : src/main/projecttwo.main : 
-> /** This file is part of ProjectTwo... **/ 
-> contentA 

Теперь рассмотрим, что я модифицируя содержание projectTwo:

contentA -> contentB 

я получаю:

ProjectOne : 
file : src/main/projectone.main : 
-> /** This file is part of ProjectOne... **/ 
-> contentA 

ProjectTwo : 
file : src/main/projecttwo.main : 
-> /** This file is part of ProjectTwo... **/ 
-> contentB 

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

ProjectOne : 
file : src/main/projectone.main : 
-> /** This file is part of ProjectOne... **/ 
-> contentB 

ProjectTwo : 
file : src/main/projecttwo.main : 
-> /** This file is part of ProjectTwo... **/ 
-> contentB 

В моем проекте используется Maven для зависимостей, Netbeans как IDE и git для управления версиями. Есть ли трюк (ветвь, плагин ...), который может помочь мне сделать это?

+0

Почему бы не разветвить проекты, чтобы иметь две версии? – Unihedron

+0

Хорошо, кажется хорошим началом. Поэтому я развивал проект. Затем я меняю каждый «ProjectOne» на «ProjectTwo» во всех файлах моей вилки. Затем я хочу, чтобы все другие изменения были перепрограммированы из одного проекта в другой, за исключением первоначальной смены имен. Как я могу это сделать ? – Sharcoux

+0

Если вы используете fork, вы закончите слияние новых функций с обоими. И тогда новая функция изменяет эти файлы, а затем будет распространяться. Предложение состоит в том, чтобы работать только с одним проектом и сценарием, что нужно скопировать (его операция копирования/вставки в конце, правда?), Так как вы не используете код ProjectB. Имеет ли это смысл? – Lovato

ответ

1

просто введите имя и лицензию в отдельный файл, используйте только одну соединительную линию и освободите две версии, используя правое имя/файл лицензии. Я предлагаю автоматизировать процесс создания релиза, используя скрипт, который принимает правильный файл имени/лицензии и окончательную сборку и создает пользовательскую версию.

+0

было бы здорово, если бы было так легко. от того, что я беру на себя, кажется, что лицензия включена в заголовок javadoc для файлов ... – Vogel612

+0

Да, точно. Лицензия указана в каждом файле, и имя проекта появляется в имени пакета ... – Sharcoux

+0

текст лицензии можно легко добавить с помощью некоторого кода сценария (grep + cat + sed) ... вы разрабатываете под Linux? Посмотрите: http://unix.stackexchange.com/questions/139926/shell-script-bash-to-add-or-replace-the-license-text-contained-within-c-h. Если вы развиваетесь под окнами, вы ввернуты, молитесь за VisualStudio/Eclipse, чтобы иметь такую ​​функцию редактирования! :-) –

0

делают каталог имя-проекта в каталоге содержимого (папка)

Пример: у вас есть два проекта под названием:

 1. Proj1 
     2. Proj2 

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

 content/proj1/license.htm 
      /proj2/license.htm 

таким же образом, что вы хотите, чтобы дифференцироваться в проект сделать их каталог с таким же именем, т.е. proj1 и proj2. Возможно, вам понадобится сделать это в логотипе изображений, в фоновом режиме и многом другом в соответствии с проектом. Создайте один файл свойств, в котором вы помещаете поле, в котором вы должны указать какое-либо имя проекта или сборки, то есть proj1 или proj2, и динамически вы должны решить, какой из них использовать.

И таким образом ваш статический контент будет отличаться, но ваша логика и код будут такими же.

+0

Я не уверен, что понимаю, что вы имеете в виду. Если я это сделаю, я буду иметь одинаковый контент все время в двух проектах, кроме имени проекта, не так ли? – Sharcoux

+0

no no У меня есть редактирование my ans, чтобы дать вам краткое описание. –

+0

Хорошо, я понимаю, что вы имеете в виду. Действительно, это хорошая идея для дифференцирования файлов, но мне также нужно изменить содержимое исходных файлов (заголовок javadoc) ... – Sharcoux

0

Вы также можете попробовать создать сценарий, который заменяет любые ссылки на имя проекта в исходном коде/именах файлов.

+0

спасибо, но в чем разница с выбранным ответом? – Sharcoux