【发布时间】:2009-07-22 21:45:42
【问题描述】:
我使用 Tortoise 客户端来签出/提交对 SVN 的更改。但是我发现这有点困难,因为我无法找到在我的本地副本中更改的所有文件的列表。有什么捷径或我忽略的东西吗?
我是 SVN 的新手。仅供参考。
【问题讨论】:
-
也许一个模组可以清理这个线程,这里有大约 10 个帖子包含相同的答案。
标签: svn tortoisesvn
我使用 Tortoise 客户端来签出/提交对 SVN 的更改。但是我发现这有点困难,因为我无法找到在我的本地副本中更改的所有文件的列表。有什么捷径或我忽略的东西吗?
我是 SVN 的新手。仅供参考。
【问题讨论】:
标签: svn tortoisesvn
我不熟悉乌龟,但是我会输入对 linux 的颠覆
svn status
一些谷歌搜索告诉我,乌龟也支持命令行突击队,在包含 svn 存储库的文件夹中尝试 svn status。
【讨论】:
我无法让svn status -q 工作。假设你在一个 linux 机器上,只查看被修改的文件,运行:svn status | grep 'M '
在 Windows 上,我不确定你会做什么,也许是 'FindStr'
【讨论】:
svn st | grep ^M 更短:)
svn st|grep ^M 甚至更短,但这不是我在 Stackoverflow 上回答任何问题的方式,除非问题是专门关于代码高尔夫的。 @DavidRivers 有最好的答案。
tortoise 中的“检查修改”命令将显示工作副本中所有已更改文件的列表。 “提交”也将显示所有更改的文件(然后您可以提交)。 “还原”还将显示更改的文件(然后您可以还原)。
【讨论】:
下面的命令将在windows中单独显示修改后的文件。
svn status | findstr "^M"
【讨论】:
svn status | Where-Object {$_.StartsWith("M")}
如果您真的想列出仅修改过的文件,您可以通过前导“M”来减少 svn st 的输出,表示文件已被修改。我会这样做:
svn st | grep ^M
【讨论】:
svn status | grep 'M ' 在 MacOSX 上运行良好。
我刚刚测试了这个。
【讨论】:
svn status | grep ^M
如果您只想要文件名并且还想要任何已添加的文件 (A)。
svn st | grep ^[AM] | cut -c9-
注意:前 7 列各一个字符宽,后跟一个空格,然后是文件名。
【讨论】:
这应该在 Windows 中执行: svn 统计 |找到“M”
【讨论】:
svn 状态 | grep ^M 将列出已修改的文件。 M - 代表修改:)
【讨论】:
使用 Powershell 你可以做到这一点:
# Checks for updates and changes in working copy.
# Regex: Excludes unmodified (first 7 columns blank). To exclude more add criteria to negative look ahead.
# -u: svn gets updates
$regex = '^(?!\s{7}).{7}\s+(.+)';
svn status -u | %{ if($_ -match $regex){ $_ } };
这将包括属性更改。这些显示在第 2 列中。它还将捕获第 3-7 列中显示的文件中的其他差异。
来源:
【讨论】:
如前所述,您必须在 GUI 中使用 SVN Check for modification 并在 CLI 中使用 tortoiseproc.exe /command:repostatus /path:"<path-to-version-control-file-or-directory>" 才能查看与 <path-to-version-control-file-or-directory> 的根相关的更改。
很遗憾,但此命令不会显示 ALL 本地更改,它只显示与请求的目录根目录相关的更改。单独进行的更改,例如根子目录中的独立签出或孤立的外部目录将显示为 Unversioned 或 Nested,您可能会错过提交/查找它们。
为避免这种情况,您必须调用 tortoiseproc.exe /command:repostatus /pathfile:"<path-to-file-with-list-of-items-to-lookup-from>"(请参阅命令行上的详细文档:https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-automation.html),或使用一些 3dparty 应用程序/实用程序/脚本来封装调用。
我已经为 Windows 编写了自己的一套脚本来自动调用来自Total Commander:
https://sourceforge.net/p/tacklebar/tacklebar/HEAD/tree/trunk/src/scripts/scm/tortoisesvn (tortoiseproc_by_nested_wc.bat)
https://sourceforge.net/p/contools/contools/HEAD/tree/trunk/Scripts/Tools/ToolAdaptors/vbs(call_nowindow.vbs)
- 打开一组 WC 目录的 TortoiseSVN 状态对话框(总是打开以显示未版本化的更改)。
Command: call_nowindow.vbs
Arguments: tortoisesvn\TortoiseProcByNestedWC.bat /command:repostatus "%P" %S
- 打开一组 WC 目录的 TortoiseSVN 提交对话框(仅在没有空版本更改时打开)。
Command: call_nowindow.vbs
Arguments: tortoisesvn\TortoiseProcByNestedWC.bat /command:commit "%P" %S
查看README_EN.txt了解最新详情(您必须在使用前执行configure.bat,并将其余脚本复制到自己身上,如call_nowindow.vbs)。
【讨论】:
右键文件夹 -> 点击 Tortoise SVN -> 检查修改
【讨论】: