Имеет ли другая система контроля версий доступ к версиям файлов, аналогичный ClearCase-подобной файловой системе? - PullRequest
5 голосов
/ 26 мая 2010

В ClearCase, если я работаю над некоторым файлом X и хочу также увидеть его предыдущую версию (скажем, версию 5), он доступен как X@@/main/5. Есть ли что-то подобное в других (желательно бесплатных) системах контроля версий?

Mercurial имеет hg cat и hg co, но они все еще не приближаются к функции ClearCase выше.

Ответы [ 3 ]

5 голосов
/ 26 мая 2010

Во-первых, X@@/main/5 - это расширенный путь , который вы действительно можете исследовать только в динамических представлениях .

Во-вторых, вы можете быстро получить доступ к более старой версии файла в Git :

git show REVISION:path/to/file

(путь к файлу всегда из корня репозитория git)
И вы можете использовать git show для другого использования ( см. Файл как он есть в другой ветке например)

См. «Как получить один файл из определенной ревизии в Git?» для получения дополнительной информации.


В терминах динамического исследования файловой системы на основе ревизий эквивалент hgfs для Git будет:

  • gitfs FUSE-файловая система для работы с исходными деревьями, хранящимися в Git репозитории.

figfs (Интерфейс файловой системы для Git FileSystem), расширяющий возможности gitfs.

Репозиторий представлен в виде файловой системы, которая позволяет просматривать несколько версий и ветвей кода проекта одновременно и без необходимости перенастраивать рабочее пространство пользователя.

Для предоставления службы файловой системы, файлы используют файловую систему в пространстве пользователя (FUSE)

Из работы Рейли Грант

fuse

Приложение FUSE позволяет реализовать файловую систему как процесс в пользовательском пространстве.
Запрос приложения передается через слой VFS и в драйвер FUSE, который отправляет запрос демону файловой системы пространства пользователя.
Затем Figfs обращается к репозиторию Git через обычную файловую систему и возвращает полученные данные в приложение.

3 голосов
/ 26 мая 2010

Найден быстрый поиск в Google gitfs :

gitfs - это файловая система на основе FUSE для работы с исходными деревьями, хранящимися в Git репозитории. Конечная цель - предоставить удобный способ работы. с множеством веток и патчей. В настоящее время только очень базовый функционал реализован - доступ только для чтения к существующим тегам и объектам.

Вероятно, есть другие (более активные) проекты, предлагающие аналогичные функции (как для Git, так и для других VCS).

1 голос
/ 26 мая 2010

В принципе, каждая команда hg, которую вы хотите обработать, может обрабатывать произвольную ревизию - использование -r в hg аналогично использованию @@ в открытом регистре все время.hg "only" нужно -r, поскольку файлы не имеют версий независимо от хранилища, поэтому для файла и версии репозитория -r однозначно.

Если вы хотите редактировать файл,Трубопровод hg cat точно такой же, как чтение file@@/branch/ver - они обеспечивают точно такой же (только для чтения) доступ к данным.

Если вы хотите удобство динамического просмотра MVFS в Mercurial, это совсем другоепроблема, и вы не можете это сделать (вы можете сделать это только для чтения по NFS, но, очевидно, там нет версий).

...