svn在本地副本中修改的文件列表

时间:2009-07-22 21:45:43

标签: svn tortoisesvn

我使用Tortoise客户端来检查/提交我对SVN的更改。但我发现这有点困难,因为我无法找到本地副本中更改的所有文件的列表。是否有任何捷径或我忽视的事情?

我是SVN的新手。 FYI。

12 个答案:

答案 0 :(得分:114)

我对乌龟不熟悉,但是对于linux的颠覆,我会输入

svn status

一些谷歌搜索告诉我,龟也支持命令行突击队,在包含svn存储库的文件夹中尝试svn状态。

答案 1 :(得分:45)

我无法让svn status -q工作。假设您在Linux机器上,要仅查看已修改的文件,请运行:svn status | grep 'M ' 在Windows上我不知道你会做什么,也许是'FindStr'

答案 2 :(得分:30)

tortoise中的“Check for Modifications”命令将显示工作副本中所有已更改文件的列表。 “Commit”也会显示所有已更改的文件(然后您可以提交)。 “还原”还会显示已更改的文件(然后您可以还原)。

答案 3 :(得分:10)

下面的命令将在Windows中单独显示修改后的文件。

svn status | findstr "^M"

答案 4 :(得分:7)

如果您确实要列出仅修改过的文件,可以通过前导“M”来减少 svn st 的输出,表示文件已被修改。我会这样做:

svn st | grep ^M

答案 5 :(得分:3)

svn status | grep 'M '适用于 MacOSX

我刚试过这个。

答案 6 :(得分:2)

如果您只想要文件名,并且还想要添加任何文件(A)。

| ColA | ColB | ColC | RankingCriteria | Ranking |
|------|------|------|-----------------|---------|
| -    | -    | -    | 10              | 1       |
|------|------|------|-----------------|---------|
| A    | -    | -    | 10              | 1       |
| B    | -    | -    | 8               | 2       |
|------|------|------|-----------------|---------|
| A    | a    | -    | 9               | 1       |
| A    | b    | -    | 7               | 2       |
| A    | c    | -    | 5               | 3       |
| A    | d    | -    | 2               | 4       |
|------|------|------|-----------------|---------|
| B    | a    | -    | 8               | 1       |
| B    | c    | -    | 7               | 2       |
| B    | b    | -    | 2               | 3       |
|------|------|------|-----------------|---------|
| A    | a    | x    | 7               | 1       |
| A    | a    | y    | 5               | 2       |
| A    | a    | z    | 4               | 3       |
|------|------|------|-----------------|---------|
| A    | b    | y    | 6               | 1       |
|------|------|------|-----------------|---------|
| A    | c    | w    | 10              | 1       |
| A    | c    | y    | 10              | 1       |
| A    | c    | z    | 8               | 2       |
| A    | c    | x    | 6               | 3       |
|------|------|------|-----------------|---------|
| A    | d    | y    | 4               | 1       |
|------|------|------|-----------------|---------|
| B    | a    | w    | 10              | 1       |
| B    | a    | x    | 8               | 2       |
|------|------|------|-----------------|---------|
| B    | b    | y    | 6               | 1       |
| B    | b    | z    | 5               | 2       |
| B    | b    | w    | 4               | 3       |
|------|------|------|-----------------|---------|
| B    | c    | x    | 6               | 1       |
|------|------|------|-----------------|---------|

注意:前7列是一个字符宽,后面是文件名。

答案 7 :(得分:1)

这应该在Windows中执行: svn stat |找到“M”

答案 8 :(得分:0)

svn status | grep ^ M将列出被修改的文件。 M - 代表修改:)

答案 9 :(得分:0)

如上所述,您必须在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>的根相关的更改。

可悲的是,但此命令不会显示所有本地更改,它只会显示与请求的目录根相关的更改。单独进行的更改(如root子目录中的独立签出或孤立外部目录)将显示为 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应用程序/实用程序/脚本来包装调用。

我已经编写了自己的一组脚本 for Windows 来自动调用Total Commanderhttps://sf.net/p/contools/contools/HEAD/tree/trunk/Scripts/Tools/ToolAdaptors/totalcmd/README_EN.txt(搜索TortoiseSVN

- 打开一组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)。

答案 10 :(得分:0)

使用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列中显示的文件中的其他差异。

来源:

答案 11 :(得分:-1)

右键单击文件夹 - &gt;点击Tortoise SVN - &gt;检查修改