【问题标题】:Check to See if File is in Repository with SharpSVN使用 SharpSVN 检查文件是否在存储库中
【发布时间】:2010-04-04 01:13:44
【问题描述】:

如何检查文件是否已在存储库中(或不在存储库中),以便确定是否需要在签入之前先“添加”它? (作为记录,我已经签入工作,但是当我尝试签入尚未添加到存储库的文件时出现异常。)

【问题讨论】:

标签: c# .net sharpsvn


【解决方案1】:

我相信您可以使用SvnClient.GetRepositoryIdFromUri 来验证特定文件是否存在。如果该方法返回 false,那么您需要将文件添加到存储库。

【讨论】:

  • 我看了一下。但是,当我将 URL 作为本地字符串路径 (C:\Path\To\File.txt) 传递时,创建的 URI 似乎不正确。也许我只是错误地格式化了 URI?
  • 您可以将 .TryGetRepositoryId(Uri, out Guid) 用于 url,将 .TryGetRepositoryId(string, out Guid) 用于本地路径。如果通过 Uri 将本地路径传递给 SharpSvn,则传递一个 file:/// 样式的 url。
  • @Bert - 不幸的是,我仍然返回 System.Guid.Empty 值作为响应,即使该文件已经在存储库中。
  • 尝试使用 .TryGetRepository(uri, out guid) 检查远程 repo 上是否存在虚假文件,并且返回 true 和非空 guid。这种方法是否只是检查补丁是否存在而不是文件?我在方法摘要中看到Gets the Uuid of a Uri, or System.Guid.Empty if path is not versioned
【解决方案2】:

虽然 SvnClient.GetRepositoryIdFromUri 可能工作(我无法让它工作),但我在 SO 上做了find an answer elsewhere 确实有效(这在我最初的搜索中没有出现,很抱歉重复的问题) .

【讨论】:

  • 我使用GetRepositoryIdFromUri 已经有一段时间了,到目前为止没有任何问题。但是今天我意识到如果你将它与以前在 SVN 中删除的文件一起使用它会失败。因此,在使用GetRepositoryIdFromUri 时,删除 SVN 中的文件并在文件系统上重新创建它会得到错误的结果。至少对我来说这不是预期的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 2014-04-22
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
相关资源
最近更新 更多