Защита файлов в репозитории git - PullRequest
10 голосов
/ 29 июля 2010

У меня есть центральный репозиторий с подмножеством файлов, которые я хочу защитить от изменения (толкания) другими пользователями. Если я добавлю эти файлы в .gitignore, они не будут клонированы.

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

Ответы [ 4 ]

1 голос
/ 19 марта 2013

Мне кажется, что проблема кроется в другом месте, если вам нужен этот уровень ограничения доступа.

Тем не менее, если вы действительно хотите реализовать это, рассмотрите Gitolite . Он позволяет вам определять довольно подробные правила доступа и, вероятно, должен подойти для ваших нужд.

Гитолитовая документация: http://gitolite.com/gitolite/master-toc.html

Вы можете определить «виртуальные ссылки» для управления доступом на уровне файлов. Подробнее об этом: http://gitolite.com/gitolite/vref.html

1 голос
/ 04 ноября 2012

Вы можете иметь файлы в хранилище, зафиксировать их, затем добавить их в .gitignore и затем удалить их из следующего коммита.

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

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

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

Сначала я подумал о драйвере фильтра (см. Pro Book ), который:

  • на этапе размазывания сохранит содержимое ваших файлов
  • на шаге очистки восстановит содержимое ваших файлов.

alt text

Но это не очень хорошее решение, так как эти сценарии примерно не сохраняют состояние file content преобразование (см. этот ответ SO ).

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

Вы также можете использовать:

git update-index --assume-unchanged file

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

0 голосов
/ 29 июля 2010

Есть ли конкретная причина, почему Git сам должен быть ответом на это?

Как насчет того, чтобы сделать файлы доступными только для чтения, и в качестве политики указать, что эти файлы не должны передаваться?

Иногда технологическое решение - не самый простой способ.

Если кто-то вносит изменения в эти файлы, эти изменения всегда можно отменить.

...