Svn 是否有提交文件的方法;部分地;乌龟?

Svn 是否有提交文件的方法;部分地;乌龟?,svn,tortoisesvn,Svn,Tortoisesvn,我想用龟甲vn提交一个文件的一部分,有什么办法吗 我将举一个例子来说明我为什么要这样做 我有一个包含一些定义的文件,这些定义在构建过程中被替换,如下所示: #define SOME_PATH "[SOME_PATH]" 这个[SOME_PATH]标记在构建过程中会被替换,但是当我编码时,我必须更改它,以便在我的机器中显示实际的路径 所以每次提交时,我都需要备份一些行,还原它们,提交然后恢复备份,这有点烦人 有没有什么方法可以告诉TortoiseSVN“忽略”X、Y和Z行中的一些更改?没有。Su

我想用龟甲vn提交一个文件的一部分,有什么办法吗

我将举一个例子来说明我为什么要这样做

我有一个包含一些定义的文件,这些定义在构建过程中被替换,如下所示:

#define SOME_PATH "[SOME_PATH]"
这个[SOME_PATH]标记在构建过程中会被替换,但是当我编码时,我必须更改它,以便在我的机器中显示实际的路径

所以每次提交时,我都需要备份一些行,还原它们,提交然后恢复备份,这有点烦人


有没有什么方法可以告诉TortoiseSVN“忽略”X、Y和Z行中的一些更改?

没有。Subversion在文件级别工作。

简短版本:没有。Subversion是一个全有或全无的系统(正如我所知道的所有源代码控制系统一样)

更长的版本:不,但是,如果您使用像NANT这样的东西进行构建,您可以使用xmlpoke或类似的工具在构建时重写部分文件。适用于我们:)我们在构建时重写了大约6个web.config文件和各种其他应用程序配置文件(好的,在构建部署包时)…


最好的方法是签入一些文件,比如“build_paths.h.default”,然后在每个构建平台上,将其复制到build_paths.h,根据需要修改它,然后告诉SVN忽略build_paths.h。最后,在程序中包含“Build#u path.h”。

您还可以定义:

  • 一个预提交钩子将为您处理回滚
  • 和一个post-commit钩子来恢复您的文件
哎哟。。。事实上,这不是一个好主意

  • 所有触发器都在服务器端执行(而不是客户端,因为ClearCase就是这样)
  • Subversion保留存储库数据某些位的客户端缓存,如果您以这种方式更改提交事务,这些缓存将无法检测到过时。这种不一致性会导致意外的行为。您不应该修改事务,而应该在预提交钩子中验证事务,如果它不满足所需的要求,则拒绝提交

一种方法是在提交后脚本中修改您的文件,然后作为独立的更改提交该文件,然后再在另一个提交后脚本中恢复它…

您需要的是各种分布式版本控制系统的一个功能,例如。

解决问题的方法不是让subversion为您执行此操作,但要配置应用程序,以便将特定于环境的详细信息(如[SOME_PATH]值)存储在签入代码的“外部”

是否通过SVN标记为忽略的单独文件执行此操作,或者是否将此信息存储在环境变量中,取决于您的开发语言/OS和一些其他因素

无论您使用哪种解决方案,最好安排某种默认值,以考虑没有指定值的情况

还值得考虑的是,这些细节应该在构建时还是运行时应用——如果您可以安排后者,那么部署新版本的应用程序就容易多了


web应用程序中有一个典型的示例,其中需要数据库连接,但实际使用的数据库实例在开发环境和生产环境中是不同的。在这种情况下,数据库配置是在web服务器上定义的(而不是在应用程序中,它只是要求web服务器使用给定的名称进行数据库连接),开发和生产服务器具有不同的配置。然后可以将相同的web应用程序部署到两台服务器上,并让每个应用程序实例访问相应的数据库。

通常是!在TurraseVN(1.8)的最新版本中添加了功能性,不幸的是,这是一个手动过程,可能不太适合于您的特定用例——更有用的是“我处于一个新特性的中间,并且注意到了一个bug,并且希望只提交bug修复”的情况。
对于您的情况,我使用一个在构建过程中使用的模板文件来创建实际使用的文件(此文件仅从模板文件创建,其他文件不存在)。我在svn中有tempalte文件,但忽略了acutal文件。这意味着我只需要在新签出后构建一次,然后我的工作副本就可以了——但是标记的值没有提交。如果我需要添加新标签,我会在tempalte文件中添加新标签,并重新生成我的工作副本。

得票最多的答案已过时

从Ortoisesvn网站:

仅提交部分文件

有时,您只希望提交对数据库所做更改的一部分 文件这种情况通常发生在你工作的时候 有些事情,但一个紧急的修复需要提交,并修复 正好在你正在处理的同一个文件中


右键单击文件并使用关联菜单→ 提交后恢复。 这将按原样创建文件的副本。然后您可以编辑 文件,例如,在“乌龟”中出现并撤消您不想做的所有更改 犯罪保存这些更改后,可以提交文件

提交完成后,将恢复文件的副本 自动生成,并且您拥有包含所有修改的文件 我们没有承诺回来


这正是我所担心的:(这个答案不再正确。请参阅from@Greylander.TortoiseSVN有客户端钩子。但是其他客户端(如commandline客户端)不支持这些钩子。TortoiseSVN使这种方式太复杂了。信息就在那里,所以它只会是一个幕后操作来执行“行方式”提交或搁置。或者有原因吗?上下文菜单→ “提交后还原”不在my TortoiseSVN中。@user1451111您必须右键单击cli