Моя компания (назовем их Acme Technology) имеет библиотеку из примерно тысячи исходных файлов, которые первоначально были получены от исследовательской группы Acme Labs, инкубированы в группе разработчиков в течение пары лет и совсем недавно были предоставлены нескольким клиентам в не разглашать. Acme готовится выпустить, возможно, 75% кода для сообщества с открытым исходным кодом. Остальные 25% будут выпущены позже, но на данный момент либо не готовы к использованию заказчиком, либо содержат код, связанный с будущими инновациями, которые они должны держать в руках конкурентов.
Код в настоящее время отформатирован с помощью #ifdefs, который позволяет той же кодовой базе работать с подготовительными платформами, которые будут доступны для университетских исследователей и гораздо более широкого круга коммерческих клиентов, когда он перейдет на открытый исходный код, и в то же время является доступны для экспериментов, создания прототипов и прямого тестирования совместимости с будущей платформой. Хранение единой базы кода считается важным для экономики (и здравомыслия) моей группы, которой было бы нелегко поддерживать две копии параллельно.
Файлы в нашей текущей базе выглядят примерно так:
> // Copyright 2012 (C) Acme Technology, All Rights Reserved.
> // Very large, often varied and restrictive copyright license in English and French,
> // sometimes also embedded in make files and shell scripts with varied
> // comment styles.
>
>
> ... Usual header stuff...
>
> void initTechnologyLibrary() {
> nuiInterface(on);
> #ifdef UNDER_RESEARCH
> holographicVisualization(on);
> #endif
> }
И мы хотели бы преобразовать их в нечто вроде:
> // GPL Copyright (C) Acme Technology Labs 2012, Some rights reserved.
> // Acme appreciates your interest in its technology, please contact xyz@acme.com
> // for technical support, and www.acme.com/emergingTech for updates and RSS feed.
>
> ... Usual header stuff...
>
> void initTechnologyLibrary() {
> nuiInterface(on);
> }
Есть ли инструмент, библиотека синтаксического анализа или популярный скрипт, который может заменить авторские права и удалить не только #ifdefs, но и такие варианты, как #if определенные (UNDER_RESEARCH) и т. Д.?
Код в настоящее время находится в Git и, вероятно, будет размещен где-то, где используется Git. Был бы способ безопасно связать репозитории вместе, чтобы мы могли эффективно интегрировать наши улучшения с версиями с открытым исходным кодом? Консультации о других подводных камнях приветствуются.