Как Вы имеете дело с принадлежностью файла в мерзавце?

Я работаю над встроенным проектом Linux. Наш процесс сборки делает изображение, которое высвечивается к устройству. Многие наши файлы требуют, чтобы корневое владение для системы работало правильно. Я столкнулся с проблемой, когда я пытался вытянуть, и некоторые из тех файлов были изменены - мерзавец не мог записать те файлы, сбрасывал трудно и делал получение по запросу sudo. Затем, когда я переключил ответвления, это сказало "не могущий удалить связь..." для всех тех файлов, но это переключило ответвления так или иначе, затем когда я пытался переключиться назад на ответвление, это не позволит мне, потому что у меня были локальные изменения.

Таким образом, я не делаю что-то правильно; что корректный путь состоит в том, чтобы иметь дело с этим?

7
задан Shawn J. Goff 2 July 2010 в 16:16
поделиться

4 ответа

Я бы структурировал вашу систему так, чтобы исходным файлам было безразлично, каков их владелец. Вы можете проверять их как в git, так и вне его, не беспокоясь о том, какие у них есть разрешения или кто является владельцем (тем более, что «владелец» не имеет значения для всех систем, которые может обслуживать развертывание git).

Если вы хотите сгенерировать встроенное изображение, скопируйте все в новый каталог и , затем установите необходимые разрешения.

7
ответ дан 6 December 2019 в 12:46
поделиться

Я не уверен, что понимаю, почему некоторые файлы должны быть chowne'd root. Интуитивно я бы предположил, что ваша проблема заключается в зависимости от владельца, а не в том, что Git не хранит права собственности. Что вы можете сделать, так это chown в вашей сборке.

1
ответ дан 6 December 2019 в 12:46
поделиться

Основываясь на ответе Кармастана, магические слова здесь - «сценарий сборки».

Файлы в git не обязательно должны выглядеть как версии развертывания. Вы не развертываете файлы .c - вы сначала их компилируете. Точно так же некоторые файлы конфигурации могут пройти процесс сборки перед развертыванием / установкой.

5
ответ дан 6 December 2019 в 12:46
поделиться

Самый простой способ (если это возможно) - не выполнять никаких операций (клонирование и т. Д.) Как root, потому что это приведет к тому, что другой пользователь не сможет работать с файлами.

Альтернативой может быть использование git init --shared для настройки общих (групповых или всех) разрешений для репозитория, за которым следует git remote add origin http: // host / repo .git и мастер источника извлечения git .По сути, это клон с менее строгими разрешениями.

3
ответ дан 6 December 2019 в 12:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: