【问题标题】:Create a folder with patch创建一个带有补丁的文件夹
【发布时间】:2011-09-02 16:51:09
【问题描述】:

我们将使用补丁文件将更改应用到我们的实时系统。

但是,我看到在从 Tortoise 创建补丁时,创建的任何新文件夹都不包含在补丁中。

也许这就是补丁的工作方式,但是应用需要添加或删除文件夹/文件的补丁的策略是什么?

假设您从 5 个 svn 修订版创建了一个补丁文件。在应用补丁之前,我是否需要跟踪(在 svn 日志中)添加/删除的任何文件夹或文件并在实时系统上手动创建/删除它们?

【问题讨论】:

  • 我不确定补丁是更新实时系统的最明智的方法。如果您错误地修补了错误的版本,或者有人将错误的文件推送到了实时系统,那么补丁最终可能会破坏您的系统。我认为使用 rsync 之类的工具要聪明得多,它可以确保您的实时系统是您的开发系统的精确镜像。
  • 上次我对此进行搜索时得出的结论是,添加/删除文件和文件夹不会反映在补丁中,应该手动完成。 patch 仅将差异应用于现有文件。如果你删除一个文件,patch 只会删除目标文件夹中文件的内容,但不会标记要从 svn 中删除的文件。

标签: svn deployment patch


【解决方案1】:

你只是少了一小步。您需要告诉 SVN 您已添加到项目中的任何文件/文件夹。在资源管理器中,右键单击要添加的文件夹,然后选择 TortoiseSVN -> 添加... 现在它将包含在您创建的任何补丁中(请参阅 Tortoise SVN 文档中的Adding New Files And Directories)。此外,当应用补丁时,将创建任何新文件/文件夹 - 正如您所期望的那样。

【讨论】:

  • 该文件夹完全按照您的描述添加,但未包含在补丁中
  • 我能说什么...应该包括在内。也许在您的工作副本上运行“清理”。添加的文件夹上是否有一个大大的蓝色加号?
  • 嗨。是的。该文件夹具有蓝色图标。有人可以发布一个补丁文件示例,其中包含创建文件夹的行吗?
  • 我想我已经意识到你的困惑了:空文件夹和空文件不会包含在补丁中。 Subversion 本身不支持这个。
【解决方案2】:

不是 100% 确定这是否是一个正确的答案,但我会告诉你为什么补丁没有创建你的目录。

  1. 补丁应该通常从您的应用程序或主文件夹的根目录创建。
  2. 补丁应该应用在您要更新的实例上的同一文件夹中。

我认为如果您尝试这种方式,它应该会创建您的文件夹。

顺便说一句,如果您已经使用 svn,为什么不直接使用 svn 更新您的 live 文件夹,或者如果您不想在您的 live 站点上使用 .svn 文件夹,甚至可以使用 svn export 来更新您的 live 文件夹?比手动打补丁更容易维护。

祝你好运。

【讨论】:

  • 问题是,当我创建补丁时,里面并没有提到创建或删除文件夹。
猜你喜欢
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2020-02-17
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多