Программное обеспечение контроля версий, которое будет хранить ВСЕ файлы и их метаданные из POSIX FS (ext3 / ext4) - PullRequest
6 голосов
/ 06 октября 2010

СЦЕНАРИЙ

Я разрабатываю Root FS для некоторых встроенных устройств Linux.Он находится на хосте, экспортирован через NFS, и моя плата монтирования на плате находится в "/".Мне нужны следующие рабочие процессы: - поделиться своей FS с другими разработчиками (у них есть свои собственные платы разработчика) - сделать резервную копию моей Root FS на каком-то "сервере" - развернуть мою Root FS на флэш-диски или другие носители -отслеживать изменения в определенных файлах в моей Root FS, ветвления и слияния, отката и т. д.

Ребята, это мне кажется сценарием контроля версий, и я даже использую git.

THEПРОБЛЕМА

Как вы знаете, Git (и svn / mercurial / bazaar!) 1) не хранит специальные файлы (файлы устройств в / dev и т. Д.) 2) не хранит владельцев файлов и разрешения.Я хочу хранить все и КАК ЕСТЬ.

ВОПРОС :

Знаете ли вы какие-нибудь VCS, которые будут выполнять эту работу?Или, может быть, вы знаете о другом (но простом) решении для выполнения моих сценариев?

ЭТО ОБЩАЯ ПРОБЛЕМА ...

Я считаю, что это так, потому что до сих пор я слышало скриптах / хуках / пользовательских программах, которые каждый (!) разрабатывает для своих целей.Все, что мне нужно, это VSS

Спасибо за еду

Ответы [ 5 ]

4 голосов
/ 06 октября 2010

Сделав нечто подобное (разрабатывая прошивку для встроенной ОС Linux), я обнаружил, что лучше поместить файл устройства в скрипт, вызываемый вашей системой сборки, чем хранить файлы устройства непосредственно на компьютере разработчика. Затем сценарий, который создает файлы, переходит в управление версиями, а не сами файлы, и (БОНУС) вам не нужно быть пользователем root, чтобы изменять их. Вместо этого запустите сборку через fakeroot.

Полагаю, это не дает прямого ответа на ваш вопрос, но, возможно, стоит подумать о пересмотре вашей модели разработки. НИКОГДА не рекомендуется запускать сборку с правами root, потому что, что произойдет, если у вас случайно появится символ "/" перед общим путем? Вы можете случайно заменить / bin целой связкой ссылок на busybox, созданную для другой архитектуры.

2 голосов
/ 07 февраля 2013

Это инструмент для вас:

http://fsvs.tigris.org/

у него есть svn backend.

2 голосов
/ 06 октября 2010

initramfs - хороший ответ на проблему с идентификатором группы пользователей, разрешением проблемы.В вашей директории с исходным кодом ядра есть scripts / gen_initramfs_list.sh.
Этот скрипт позволяет вам создать архив initramfs из нескольких источников.Например, вы можете указать:

  • каталог: файлы и каталог, найденные в этом базовом каталоге, будут находиться в корне вашей файловой системы.

  • список файлов: это текстовый файл, очень полезный для создания каталогов, файлов и специальных файлов устройств.См. Пример ниже

Если вы работаете как пользователь без полномочий root, и ваши rootfs находятся в rootfsdir, то, вероятно, файл в rootfsdir принадлежит вам.gen_initramfs_list может перевести ваш uid, gid в 0, 0. Вот пример командной строки:

gen_initramfs_list -u $MYUID -o initramfs.gz rootfsdir/ device.txt 

Где device.txt содержит:

# This is a very simple, default initramfs

dir /dev 0755 0 0
nod /dev/console 0600 0 0 c 5 1
dir /root 0700 0 0
# file /kinit usr/kinit/kinit 0755 0 0
# slink /init kinit 0755 0 0

Тогда вы можете использовать стандартный контроль версийдля вашего содержимого rootfsdir и добавьте файл device.txt под управлением версиями, и вот вы: содержимое и атрибут файла версионны :).

Я не знаю, можете ли вы изменить разрешение и uid / gid файла в источнике каталога через источник списка файлов, но это было бы логично.
Конечно, вы можете начать сминимальный корень fs, из которого вы монтируете существующий nfs_export.

Это распространенная проблема, и gen_initramfs_list является инструментом для ее решения.

2 голосов
/ 06 октября 2010

Я знаю, что это кажется немного очевидным, но поскольку вы не упомянули об этом: рассматривали ли вы механизмы для помещения всех ваших специальных файлов в обычный файл, как, например, в архив tar?Вы можете хранить это прекрасно с любой системой контроля версий, и, поскольку файловые системы имеют много двоичных данных, в любом случае различия между двумя версиями полной корневой файловой системы не так уж полезны, так что вы можете даже не потерять слишком много функций вашей версииСистема управления обеспечивает.

0 голосов
/ 22 марта 2013

Почему бы просто не использовать rsync?Что-то вроде rsnapshot (http://www.rsnapshot.org) будет делать то, что вы хотите. В качестве альтернативы Unison (http://www.cis.upenn.edu/~bcpierce/unison/) явно предназначен для этого - он описывает себя как кроссплатформенную технологию синхронизации файлов с контролем версий, и может бытьтебе нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...