gpt4 book ai didi

SVN:有没有办法将文件标记为 "do not commit"?

转载 作者:行者123 更新时间:2023-12-03 04:21:01 27 4
gpt4 key购买 nike

使用 TortoiseSVN,我可以将文件移动到提交时忽略更改列表中,这样当我提交整个树时,对该文件的更改就不会被提交。

有没有办法使用 svn 命令行工具来做类似的事情?

编辑:感谢您使用svn:ignore的建议,但这并不能完全满足我的要求。

svn:ignore 会影响 svn addsvn import 等内容。它提供了要忽略的文件名模式列表。

我有一个已经在源代码控制下的文件,但我想对该文件进行临时更改,而我不想稍后在提交整个源代码树时提交该更改。我正在做很多其他更改,我可以在监视器上贴一条注释,告诉我在提交树之前恢复该文件,但如果 svn 可以自动跳过该文件,那就太好了。

最佳答案

自 2016 年 2 月/版本 1.9 起,Subversion 没有内置的“不提交”/“提交时忽略”功能。这个答案是一个非理想的命令行解决方法

正如OP所述,TortoiseSVN有一个内置的变更列表“ignore-on-commit”,它会自动从提交中排除。 命令行客户端没有此功能,因此您需要使用多个更改列表来完成相同的行为(带警告):

  • 一个用于您想要投入的工作[工作]
  • 用于您想要忽略的事情 [ignore-on-commit]

由于 TortoiseSVN 有先例,因此我在示例中对我不想提交的文件使用“ignore-on-commit”。我将使用“work”来表示我所做的文件,但您可以选择任何您想要的名称。

首先,将所有文件添加到名为“work”的更改列表中。这必须从工作副本的根目录运行:

svn cl work . -R

这会将工作副本中的所有文件递归添加到名为“work”的更改列表中。这样做有一个缺点 - 当新文件添加到工作副本中时,您需要专门添加新文件,否则它们将不会被包含在内。其次,如果您必须再次运行此命令,则需要再次重新添加所有“忽略提交”文件。不理想 - 您可以像其他人一样开始在文件中维护自己的“忽略”列表。

然后,对于您要排除的文件:

svn cl ignore-on-commit path\to\file-to-ignore

由于文件只能位于一个变更列表中,因此在之前的“工作”添加之后运行此添加将从“工作”变更列表中删除您想要忽略的文件,并将其放入“提交时忽略”变更列表中。

当您准备好提交您确实希望提交的修改文件时,只需将“--cl work”添加到您的提交中即可:

svn commit --cl work -m "message"

这是我的机器上的一个简单示例:

D:\workspace\trunk>svn cl work . -R
Skipped '.'
Skipped 'src'
Skipped 'src\conf'
A [work] src\conf\db.properties
Skipped 'src\java'
Skipped 'src\java\com'
Skipped 'src\java\com\corp'
Skipped 'src\java\com\corp\sample'
A [work] src\java\com\corp\sample\Main.java
Skipped 'src\java\com\corp\sample\controller'
A [work] src\java\com\corp\sample\controller\Controller.java
Skipped 'src\java\com\corp\sample\model'
A [work] src\java\com\corp\sample\model\Model.java
Skipped 'src\java\com\corp\sample\view'
A [work] src\java\com\corp\sample\view\View.java
Skipped 'src\resource'
A [work] src\resource\icon.ico
Skipped 'src\test'

D:\workspace\trunk>svn cl ignore-on-commit src\conf\db.properties
D [work] src\conf\db.properties
A [ignore-on-commit] src\conf\db.properties

D:\workspace\trunk>svn status

--- Changelist 'work':
src\java\com\corp\sample\Main.java
src\java\com\corp\sample\controller\Controller.java
src\java\com\corp\sample\model\Model.java
M src\java\com\corp\sample\view\View.java
src\resource\icon.ico

--- Changelist 'ignore-on-commit':
M src\conf\db.properties

D:\workspace\trunk>svn commit --cl work -m "fixed refresh issue"
Sending src\java\com\corp\sample\view\View.java
Transmitting file data .done
Committing transaction...
Committed revision 9.

另一种方法是简单地将您希望提交的每个文件添加到“工作”更改列表中,甚至不维护忽略列表,但这也需要大量工作。实际上,唯一简单、理想的解决方案是如果/当这在 SVN 本身中实现时。 Subversion 问题跟踪器中存在一个与此相关的长期问题,SVN-2858 ,以防将来发生变化。

关于SVN:有没有办法将文件标记为 "do not commit"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/635446/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com