На моей практике было два варианта:
1. Часть кода шифровалась, мне предоставлялся доступ только к нужной папке ftp и к нужному модулю, основной движок лежал отдельно. Всё это происходило на тестовом сервере, так что боевую БД я бы не снёс.
2. По сути то же, но проще: на каждом сервере свой конфиг доступа к БД, права выноса кода на релиз у меня нет - только делаю коммит, после отмашки тестировщика. Чекаут только нужных проектов и библиотек. Коммит можно делать тоже только туда, куда надо.
Защита самого кода встречается крайне редко, потому что код, как правило, типовой, и можно без труда найти/написать модули для всего. Гораздо важнее отгородить доступ к данным (БД и другие файлы - картинки, звуки и т.п.), хотя при желании и это можно спарсить. Самое ценное - это клиенты, продажи, и прочее. Без доступа к коду и данным достаточно легко сделать клон почти любого проекта, но без продаж, рейтингов и клиентской базы - он вам не конкурент.