Я тоже думал, что гроши - оказалось - жуткие деньги
МНОГО пользователей, все хотят поработать
RAID из 10 винтов по 250 гиг (не такие уж большие деньги) снимут напряженность. На одном проекте - наверняка.
На нашем проекте пространство вообще не ограничено (административно). Т.е. если кто-то из IT обнаружит, что оно подходит к концу, нужный человек метнется в магазин, купит дюжину винтов, и подключит их до того как разработчики узнают о том, что что-то угрожает процессу. Это гораздо дешевле, чем срыв сроков по причинам, которых можно было избежать.
Что за зверь? Можно поподробнее?
Я имел ввиду
Inversion of control, или скорее даже
Dependency inversion principle.
Только это скорее архитектурное решение, нежели административное. Оно позволит делать копию только исходников интерфейсных модулей и того модуля, в котором производятся изменения. Но не только это. Следствием применения такого подхода может быть значительное уменьшение времени сборки всего проекта.
Только вот я очень и очень и очень сильно сомневаюсь, что этот подход будет воспринят разработчиками, или теми, кто у руля проекта, с энтузиазмом (работал я в институте, очень хорошо представляю что там и как на ниве разработки).
To Mike22. Кротко, проблема проста. Есть единый проект, открытый всем на чтение. Пользователь хочет локально внести в него изменения, но при этом не создавать полную копию всего проекта у себя. Во время работы над локальными изменениями основной проект может(и будет!) меняться. Хочется, чтобы пользователь при очередной сборке эти изменения почуйствовал, но при этом и свои не потерял. Сейчас у меня пользователь создаёт зеркало со ссылками(командой lndir) плюс хитрый Макеfile, котрый отделяет общее от локального. В итоге его локальные изменения линкуются с общим проектом, и он получает общий исполняемый файл со своими изменениями.
То что вы хотите - это очень неправильно (имхо). На мой взгляд, куда более удобный подход, когда пользователь вносит изменения максимально изолированно от других пользователей, фактически в своей персональной ветке. Для этого создаются ветки per-developer-branch, per-feature-branch и даже per-version-branch. Я как разработчик, могу уйти в свою ветку на месяц, создать там независимо от остальных что-то, потом парой merge операций (forward integration и reverse integration) безболезненно синхронизовать свои изменения с главной веткой. Reverse integration вообще-то должен делать специальный человек, который убеждается, что функциональность проекта не нарушена, но я достаточно крут для этого.
В вашем случае, как я понимаю, forward integration будет производитсья автоматически без команды пользователя, и непременно будет отвлекать его от непосредственной задачи. Просто жутко представить, как это может повлиять на процесс отладки и тестирования. Отладка ведь в своем роде аналитический просецесс, где предположение о том, что только один пользователь может вносить изменения, влияющие на функциональность дает ощутимое преимущество.