Одни и те же файлы слов в нескольких каталогах без прав администратора для нескольких пользователей - PullRequest
0 голосов
/ 28 октября 2019

В моем текущем проекте я столкнулся с проблемой, когда нескольким пользователям необходим доступ к сотням файлов Word .docx в нескольких каталогах. У них нет прав администратора на своих компьютерах с Windows 10, и они хотят подключить к ним контроль версий для дополнительной безопасности.

Поэтому я попытался решить эту проблему, сначала создав репозиторий Git, в котором я хранилдокументы в папке. Я создал файл bat отдельно с кодом, который загружал и разархивировал PortableGit, клонировал и загрузил все документы на их компьютеры. Но проблема здесь в том, что я попытался создать символическую ссылку с клоном Git, который требует от вас выполнения бита в качестве администратора (что в данном случае невозможно для конечных пользователей). Затем я попытался создать приложение C # .net Core 3 для Windows с помощью LibGit2Sharp, чтобы я мог выполнить программу (как мне показалось), но я все равно получал жалобы на права администратора для символических ссылок. Затем я попытался использовать жесткую ссылку, но обнаружил, что Word заменяет файл после того, как он сохраняет последние изменения и, следовательно, разрывает ссылку.

Такое ощущение, что я просто вращаюсь по кругу в задаче, которую не должно быть слишком сложно решить? Причина, по которой им нужно работать с одним и тем же документом в разных папках, заключается в том, что управление шаблонами для юридических целей осуществляется в другом контексте, где они должны быть абсолютно одинаковыми. Плюс, что есть разные люди в разных контекстах / каталогах.

тлдр;Мне нужно управлять решением, в котором файлы .docx (в будущем это могут быть другие типы файлов) можно редактировать в нескольких разных каталогах без прав администратора в среде Windows 10. Контроль версий также желателен.

1 Ответ

1 голос
/ 29 октября 2019

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

libgit2 делает то же самое, поскольку он должен быть совместим с Git.

Единственная причина, по которой вы должны быть обеспокоены сбоем этой операции, заключается в том, что вам нужны символические ссылки, что звучит так же, как и вы. Эта проблема не ограничивается Git;Это проблема с вашим сценарием и моделью разрешений и символическими ссылками в Windows.

Git клонируется в существующий пустой каталог, так что вы можете запустить свой сценарий от имени администратора и создать каталог с привилегиями символических ссылок для пользователя. , а затем клонировать как пользователь. Если вы используете Windows 10, вы можете включить режим разработчика в системах;в конце концов, системы Unix работали отлично в течение нескольких десятилетий с символическими ссылками.

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

Наконец, вы можете использовать подсистему Windows для Linux и хранить данные вфайловая система DrvFS (эмулированная Linux), поскольку она допускает символические ссылки для всех пользователей.

...