我使用Tortoise客户端来检出/提交我的更改到SVN。但我发现这有点困难,因为我无法找到在我的本地副本中修改的所有文件的列表。是否有任何快捷方式或我忽略了什么?
我是SVN的新手。FYI。
我使用Tortoise客户端来检出/提交我的更改到SVN。但我发现这有点困难,因为我无法找到在我的本地副本中修改的所有文件的列表。是否有任何快捷方式或我忽略了什么?
我是SVN的新手。FYI。
我不熟悉tortoise,但对于在linux上使用subversion,我会输入以下命令
svn status
通过一些搜索,我发现乌龟还支持命令行命令,在包含svn仓库的文件夹中尝试执行svn status。
我无法让svn status -q
正常工作。假设你正在一个Linux系统上,如果想要只看到已修改的文件,请输入以下命令:svn status | grep 'M '
在Windows上我不确定该怎么做,也许可以使用'FindStr'。
svn st | grep ^M
更短 :) (该命令用于在 SVN 版本控制系统中查找所有已修改的文件,这里使用了管道符和 grep 工具来筛选出以 "M" 开头的行,表示已修改状态。原文指出此方法更为简洁。) - kliteynsvn st|grep ^M
这个命令更加简短,但是除非问题明确要求使用代码高尔夫方式回答,否则我不会在Stackoverflow上这样回答任何问题。@DavidRivers 的回答最好。 - IceArdor"TortoiseSVN" 中的 "Check for Modifications" 命令可以显示工作副本中所有已修改的文件列表。而 "Commit" 命令则会显示所有已修改的文件 (您随后可以进行提交)。"Revert" 命令也会显示已修改的文件 (您随后可以进行还原)。
svn status | findstr "^M"
svn status | Where-Object {$_.StartsWith("M")}
- Rajsvn st | grep ^M
svn status | grep 'M '
命令可以正常工作。我刚刚进行了测试。svn status | grep ^M
- Paul Rooney如果您只想要文件名,并且还想获取已添加的任何文件(A)。
svn st | grep ^[AM] | cut -c9-
如上所述,您需要在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本地更改,它只显示与请求目录根相关的更改。单独获取的更改,例如独立检出或根子目录中的孤立外部目录将显示为未版本化或嵌套,您可能会错过提交/查找它们的机会。
为了避免这种情况,您必须调用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),或使用一些第三方应用程序/实用程序/脚本来包装调用。Total Commander
调用:
https://github.com/andry81/tacklebar/tree/HEAD/src/scripts/scm/tortoisesvn(tortoiseproc_by_nested_wc.bat
)
https://github.com/andry81/contools/tree/HEAD/Scripts/Tools/ToolAdaptors/vbs (call_nowindow.vbs
)
- 打开 TortoiseSVN 状态对话框以查看一组工作副本目录(始终打开以显示未版本化的更改)。
Command: call_nowindow.vbs
Arguments: tortoisesvn\TortoiseProcByNestedWC.bat /command:repostatus "%P" %S
- 打开 TortoiseSVN 提交对话框以针对一组工作副本目录(仅在存在未提交的版本更改时才打开)。
Command: call_nowindow.vbs
Arguments: tortoisesvn\TortoiseProcByNestedWC.bat /command:commit "%P" %S
README_EN.txt
获取最新详情(在使用前必须执行 configure.bat
并自行复制其他脚本,例如 call_nowindow.vbs
)。你可以使用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列中显示的文件中的其他差异。
来源:
svn状态:http://svnbook.red-bean.com/en/1.8/svn.ref.svn.c.status.html
用于匹配svn状态结果的正则表达式:使用PowerShell和svn删除未版本化的文件