我正在构建一个小型内部工具,供我公司的开发人员使用。小目标之一是在我们更改密码时更新多个位置。需要更新的这些位置之一是颠覆。大多数开发人员都使用 TortoiseSvn,但并非所有人都使用(所以我更喜欢程序中立的解决方案,但这不是必需的)。
根据我对这个主题的研究,我的第一印象是 Tortoise 或其他应用程序将具有我可以使用的更改密码功能。从我能找到的情况来看,情况并非如此。所以我的下一个想法是更改存储在 %APPDATA%\Subversion\auth\svn.simple 中的加密密码。这样,我们就可以绕过任何程序,只需修复本地机器凭据,然后就可以愉快地前进了。
对于 Windows 机器,subversion 使用 wincrypt 密码存储进行加密。使用该代码非常简单。我发现这个DPAPI(来自 Obviex)代码可以为我处理加密。它只是为我处理细节(小记:我遇到了一些小问题,System.Security.Cryptography.ProtectedData
所以我决定坚持这种方式)。
使用此代码,我能够从 svn.simple 文件夹中解密密码并发现它有效(之前保存的身份验证已解密并显示正确的密码)。但是,当我将密码加密并将其存储在适当的位置时,我总是会从 TortoiseSvn 获得登录屏幕。它不喜欢我的加密密码。
那么我的问题是什么......有没有人完成了类似于我想要做的事情?我应该忘记尝试更新颠覆密码吗?我是否应该强制签出存储库并提供凭据(我可以使用SharpSvn执行此操作),然后在完成后删除存储库?
猜猜我只是希望发现有人已经解决了这个问题并且可以指出我正确的方向。如果您有任何问题,请告诉我。
其他值得注意的链接:
- 关于提取 TortoiseSVN 密码的 Stackoverflow 问题
- TortoiseSVN 密码解密器- 用于解析 svn.simple 中的文件。为将新的加密密码应用于现有的 svn 身份验证文件进行了一些小的更改。