多个目录中的相同单词文件没有多个用户的管理员权限

Same word files in multiple directories without admin right for multiple users

我在当前项目中遇到一个问题,多个用户需要访问多个目录中的数百个 Word .docx 文件。他们对他们的 Windows 10 台计算机没有任何管理员权限,他们希望将版本控制连接到它以提高安全性。

所以我试图通过首先创建一个 Git 存储库来解决这个问题,我将文档存储在一个文件夹中。我用下载和解压缩 PortableGit 的代码单独创建了一个 bat 文件,将所有文档克隆并下载到他们的计算机上。但是这里的问题是我尝试使用 Git 克隆创建符号 link,这需要您以管理员身份执行 bat(在这种情况下,最终用户无法执行)。 然后,我尝试使用 LibGit2Sharp 创建一个 C# .net Core 3 Windows 应用程序,这样我就可以执行该程序(我是这么认为的),但我仍然抱怨符号 [= 的管理员权限24=]秒。 然后我尝试使用 hard link,但我发现 Word 在保存最新更改后替换了文件,因此破坏了 link。

感觉自己在一个应该不难解决的问题上兜圈子? 他们需要在不同文件夹中处理同一文档的原因是,出于法律目的,在需要完全相同的不同上下文中管理模板。另外,不同的 context/directories 中有不同的人。

tldr; 我需要管理一个解决方案,其中 .docx 文件(将来可能是其他类型的文件)可以在 Windows 10 环境中无需管理员权限的情况下在多个不同的目录中进行编辑。还需要版本控制。

当您创建存储库时,如果启用了 symlinks,Git 将尝试创建一个指向不存在文件的 symlink 以查看系统和文件系统支持符号 links。如果此操作失败也没关系,因为它只是意味着系统无法执行该操作,这在 Windows 上是预期的。但是,如果它确实失败了,那么 Git 将把符号 link 作为文件检出,因为没有其他方式来表示它们。

libgit2 做同样的事情,因为它必须与 Git.

兼容

您需要担心此操作失败的唯一原因是您是否需要符号 links,听起来您确实需要。此问题不仅限于 Git;这是您的脚本和权限模型以及 Windows.

上的符号 link 的问题

Git 将克隆到现有的空目录中,因此您可以将脚本 运行 作为管理员并为用户创建具有符号 link 权限的目录,然后克隆为用户。如果您使用的是 Windows 10,则可以在系统上启用开发人员模式;毕竟,Unix 系统已经使用符号 links.

工作了几十年。

当然还有其他解决方案,包括不使用符号 links 和只是告诉人们在正确的目录中查找文件。您还可以将这些文件存储在远程系统上,您已在该系统上以管理员身份创建了 symlinks,并授予每个人远程访问这些文件的权限,既可以作为一个共享存储库,也可以作为每个用户一个(尽管共享一个存储库通常是个坏主意)。使用 hard links 不是解决方案,因为 Git 不会保留或尊重 hard links,所以你不能有效地一起使用它们。

最后,您可以为 Linux 使用 Windows 子系统并将数据存储在 DrvFS(模拟 Linux)文件系统上,因为它允许符号 links对于所有用户。