Git разрешить / запретить фиксацию и pu sh определенных файлов - PullRequest
0 голосов
/ 13 января 2020

Есть ли способ в Git определить специальные права на определенный файл или папку?

У меня есть проект Node, созданный с использованием файла Docker -Compose YML. Я намерен, чтобы команда, работающая над этим проектом, могла изменить любой код, кроме Docker -Compose YML-файла. Я хотел бы запретить передачу этого файла кому-либо, кроме меня. Есть ли способ достичь этого в Git?

Ответы [ 3 ]

1 голос
/ 13 января 2020

Нет встроенного c способа сделать это с помощью Git, но есть инструменты, которые могут помочь.

  1. Вы можете настроить систему CI для проверки толчков и неудач, если кто-то другой чем вы нажимаете на этот файл.
  2. Вы можете настроить свое решение для хостинга, такое как GitHub, на использование функциональности владельцев кода и получить разрешение от вас перед слиянием.
  3. Если ваше решение для хостинга поддерживает таким образом, вы можете настроить pre-receive перехват (возможно, с сертификатами pu sh или подписать коммит) и отклонить запросы от кого-либо, кроме вас.
  4. Вы можете четко сообщить свои ожидания команде и положиться на них уважая ваши пожелания.
0 голосов
/ 13 января 2020

Вы можете установить флаг skip-worktree для ограниченных файлов, например так:

git update-index --skip-worktree path/to/the/file

Это немного отличает эффект от того, что вам нужно, но при условии надлежащего соглашения в команде, оно должно окупиться: skip-worktree заставляет git игнорировать любые локальные изменения, сделанные в указанном дереве (файлах), поэтому, независимо от того, изменяют это ваши товарищи по команде или нет, git не отслеживает эти изменения. Однако git по-прежнему отслеживает удаленные изменения, поэтому команда git pull обновит содержимое файлов.

Основным недостатком является то, что этот флаг должен быть установлен локально на всех машинах, где эти локальные изменения файла должны игнорироваться на. Для машин, на которых вы будете иметь возможность получить эти файлы sh, просто не устанавливайте этот флаг или снимайте его с помощью следующей команды:

git update-index --no-skip-worktree path/to/the/file
0 голосов
/ 13 января 2020

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

Этот файл должен быть частью вашего проекта (вам следует commit и pu sh it), чтобы все в вашем проекте получили его.

Чтобы "подавить" gitignore, вы можете git add --force docker-compose.yml - так что только вы будете использовать эту команду.

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