Как вы справляетесь с владением файлами в git? - PullRequest
7 голосов
/ 02 июля 2010

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

Так что я не правильно что-то делаю; как правильно с этим справиться?

Ответы [ 4 ]

7 голосов
/ 02 июля 2010

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

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

5 голосов
/ 02 июля 2010

Чтобы основываться на ответе Кармастана, здесь используются волшебные слова "сценарий сборки".

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

3 голосов
/ 02 июля 2010

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

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

1 голос
/ 02 июля 2010

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

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