Некоторые системы контроля версий используют номер редакции для каждого файла. Subversion использует один номер ревизии для всего хранилища. Когда вы делаете коммит, вы можете заставить Subversion фиксировать изменения, сделанные вами в одном файле, нескольких файлах или даже в каждом файле, который был изменен с момента вашей последней проверки (см. Документацию для svn add
, svn revert
и svn commit
). Subversion рассматривает фиксацию как атомарную транзакцию; то есть независимо от того, сколько или сколько файлов вы фиксируете, все они фиксируются в одной операции, которая либо полностью завершается, либо полностью завершается неудачей (в этом случае хранилище не изменяется). Каждый раз, когда вы вводите команду фиксации, номер редакции для всего хранилища увеличивается.
Subversion не знает, компилируется ли ваш код, поэтому ничто не мешает вам проверить плохой код. Вы можете использовать Subversion для хранения файлов любого типа, а не только исходного кода, поэтому Subversion не пытается проверить работоспособность всего, что вы регистрируете (поскольку попытка «построить» хранилище, заполненное текстовыми файлами, не имеет смысла, и поскольку у сервера нет надежного способа угадать вашу систему сборки или как скомпилировать ваш код). Тем не менее, можно сказать серверу Subversion запускать скрипт всякий раз, когда предпринята попытка коммита, но до обработки транзакции (это называется ловушка предварительной фиксации ). Некоторые люди используют эту функцию со скриптом, который пытается создать исходный код (включая входящие изменения). Если сценарий не может создать источник, он возвращает ошибку, а Subversion отклоняет транзакцию (с вашей стороны вы увидите, что операция фиксации не удалась). Автоматическое построение исходного кода не является чем-то, что встроено в Subversion по умолчанию, но добавить его не сложно, если это то, что вас интересует.
Для получения дополнительной информации я настоятельно рекомендую прочитать (бесплатную) официальную книгу Subversion "Контроль версий с Subversion" . Его легко прочитать, он содержит почти все, что вы когда-либо хотели знать о Subversion, и содержит множество примеров.