В ClearCase, если я работаю над некоторым файлом X и хочу также видеть его предыдущую версию (говорят, что версия 5), это доступно как X@@/main/5
. Действительно ли что-то подобно доступный с другим (предпочтительно свободный) системы управления версиями?
Подвижный имеет hg cat
и hg co
, но они все еще не близко подходят к функции ClearCase выше.
Быстрый поиск в Google нашел gitfs:
gitfs - это файловая система на базе FUSE для работы с деревьями исходников, хранящихся в git-репозиториях. Конечная цель - предоставить удобный способ работы с большим количеством ветвей и патчей. В настоящее время реализована только базовая функциональность реализована - доступ только для чтения к существующим тегам и объектам.
Вероятно, существуют и другие (более активные) проекты, предлагающие аналогичные возможности (как для Git, так и для других VCS).
Практически каждая команда hg
, которую вы хотели бы обработать с произвольной версией, может - использовать -r
в hg
, как постоянно используя @@
в прозрачном кейсе. hg
«только» требует -r
, потому что файлы не имеют версии независимо от репозитория, поэтому для файла и версии репозитория -r
однозначно.
Если вы хотите отредактировать файл, piping hg cat
точно такой же, как чтение файла @@ / branch / ver
- они предоставляют точно такой же (только для чтения) доступ к данные.
Если вам нужно удобство динамических представлений над MVFS в Mercurial, это совершенно другая проблема, и вы не можете этого сделать (вы можете сделать это через NFS только для чтения, но, очевидно, там нет управления версиями).
Во-первых, X @@ / main / 5
- это расширенный путь , который вы действительно можете изучить только в динамических представлениях .
Во-вторых, вы можете быстро получить доступ к более старой версии файла в Git :
git show REVISION:path/to/file
(путь к файлу всегда находится в корне репозитория git)
И вы можете использовать git show для другого использования ( см. Файл, как он находится в другой ветке , например)
См. «Как получить отдельный файл из определенной ревизии в Git?» для получения дополнительной информации.
С точки зрения динамического исследования файловой системы на основе ревизий, эквивалентом hgfs для Git будет:
figfs (интерфейс файловой системы к файловой системе Git), который расширяется в gitfs.
Репозиторий представлен как файловая система, которая позволяет просматривать несколько версий и ветвей кода проекта одновременно и без необходимости перенастраивать рабочее пространство пользователя.
Чтобы предоставить сервис файловой системы, FUSE использует файловую систему в пространстве пользователя (FUSE).
Из работы Рейли Гранта
Приложение FUSE позволяет файловой системе быть реализован как процесс в пространстве пользователя.
Запрос приложения передается через уровень VFS в драйвер FUSE, который
отправляет запрос демону файловой системы пространства пользователя.
Затем Figfs обращается к репозиторию Git через обычную файловую систему и возвращает полученные данные приложению.