- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
В процессе создания ПО наработан некоторый набор функций, использующихся в разных проектах.
С целью актуализации подключаются через инклюд, из одного файла, посредством создания символических ссылок из каждого проекта.
При использовании VCS (в моём случае, Subversion) возникает дилемма: любое обновление оригинального файла с функциями влечёт за собой статус линка "изменён" в каждом из проектов. Если произвести на любом из них откат назад по времени, получится рассогласованность с версией общего файла. Попытка обновления проекта из репозитория до старой версии вызывает перезапись общего файла на более старый во всех проектах.
Хорошо, мы можем принудительно исключить из контроля версий общий файл. Но тогда теряется возможность откатить проект на "те самые позиции" в заданный момент времени. Т.е. проект вернулся в то состояние, однако, библиотеки актуальные на данный момент. В результате, точное соответствие поведения программы на тот момент времени не получается, более того, могут возникнуть непредвиденные результаты.
Тогда, с теми библиотеками программа работала так-то, а теперь, даже в той версии, но с актуальными библиотеками, ведёт себя непредсказуемо.
Что делать?
Сам себе идеи подкидываю:
Отдельный репозиторий библиотек.
а) Линки, исключённые из контроля версий. При откате проекта рулить вручную и инклюдами, выставляя соответствие версий/дат.
Недостаток: много лишних телодвижений.
б) Рабочие копии VCS библиотек в каждом проекте, синхронизируемые по хуку (как сделать, пока не придумал, Subversion радует нас отсутствием client-side hooks в нативном клиенте, TurtleSVN использовать нецелесообразно, ибо не Windows).
Недостаток, если запилить: основное достоинство — синхронность библиотек и проекта на каждый момент времени. А если я хочу старую версию проекта погонять на новье? Опять вмешательство в логику и бардак.
Чет завернули Вы со структурой. Используйте менеджер зависимостей
Есть ли какой то менеджер зависимостей для используемых технологий в проекте? (а-ля composer для php, bower для js и т.д.). Если есть - то юзайте и будет Вам счастье. Для общих компонентов заводится свой репозиторий под каждый компонент, в менеджере зависимости указывается, какие версии из какого конкретно репозитория юзать для данного проекта.
Так же в гите, например, есть submodules - это как бы возможность синхронизировать определенные каталоги в проекте из других репозиториев. Обновился репозиторий общего компонента, но нельзя чтоб в текущем использовалась новая версия - не обновляйте сабмодуль. Потому что, насколько мне известно submodule в гите не понимает версии.
Почитал про composer, прикольно. Всё уже придумали, а я собирался велосипедировать — делать загрузчик функций, рассыпаных по отдельным файлам :)
Кстати, я его уже вписал в систему месяц назад. Но это для вытягивания фреймворков. Не знал, что для своей писанины пригодится.