SVN не хранит файлы, он хранит файловые системы.Таким образом, ревизия используется для доступа к правильной ревизии файловой системы, а затем часть пути используется для доступа к рассматриваемому файлу.
Внутренние SVN-версии ревизий с их собственными соответствующими идентификаторами узлов,Однако такой «прямой доступ к inode» обычно не поддерживается, поскольку в inode отсутствует определенная информация, которая обычно необходима (например, имя файла, владелец, группа, разрешения и т. Д.).
Git надругая рука хранит файлы, поэтому имеет смысл найти лучший идентификатор файла, чем имя файла (которое может остаться неизменным для нескольких ревизий файла), поэтому Git использует хэш содержимого файла.Ориентированный на файл, он нередко извлекает файл, используя его идентификатор (хэш).
К сожалению, нет эквивалента извлечения файловой системы с помощью хэша, потому что входные данные хэша должны основываться на содержимом inode для каждой версии inode.Это будет означать способ хэширования содержимого дерева, что будет возможно.Такая система обеспечит быстрый доступ к определенной исторической версии inode.
Вероятно, главная причина, по которой это не было сделано таким образом, заключается в том, что быстрый клиентский доступ к inode не является большой проблемой в SVN.,У сервера SVN уже есть указатели и структура данных для доступа к inode на стороне сервера, и он знает файловую систему удаленного хранилища, передаваемую клиентом.Это позволяет SVN передавать различия в файловых системах клиенту (а не полную копию файловой системы).Без необходимости постоянно извлекать полные файловые системы быстрый доступ к полному извлечению файловой системы не является приоритетом.