如何在未检出文件的情况下使用TortoiseSVN创建补丁?

7

我知道如果有一些文件被检出(修改),那么我可以右键单击包含这些文件的文件夹,然后选择“创建补丁”。然后我将看到所有已检出文件的列表。因此,我可以将它们包含在补丁中。 但是当没有文件被检出时,也就是说一切都提交了,创建补丁窗口是空的。所以问题是如何从已检入的文件创建补丁?我想把这个补丁发送给同事,让他们可以在公司svn服务器上应用它们。

谢谢,


补丁指的是两个版本之间的差异。在您所描述的情况下,SVN基础上存在本地修改。 您想要减去哪两个版本? - Pavel Radzivilovsky
公司里有一个SVN服务器,我无法从家里访问它。每周一次,我会通过dvd/flash等方式将公司的repo复制到家用电脑上。在这一周中,我对家里的源代码进行了修改并希望通过向同事发送电子邮件的方式将它们发送到公司的repo中。我知道Git可能是更好的选择,但我只能使用SVN。 - Afshar Mohebi
3个回答

12

统一差异(Unified Diff)是一个补丁文件。

  1. 使用TortoiseSVN,在工作目录上右键单击并选择“查看日志”
  2. 选择两个版本(按Ctrl键点击)
  3. 在任意被高亮的版本上右键单击,选择“显示差异为统一差异”

将更改后的文件与文件夹结构保存。

  1. 使用TortoiseSVN,在工作目录上右键单击并选择“查看日志”
  2. 选择两个版本(按Ctrl键点击)
  3. 选择"比较版本",这会在对话框中列出版本之间已修改的文件
  4. 在弹出的对话框中选择所有文件。右键单击所选文件并选择“导出选择到…”

这将导出具有文件夹结构的已修改文件。


看起来很不错,但存在两个问题:1. 如果我在整个文件夹树中有多个项目更改,我必须手动在每个文件上执行此操作。2. 是否有一种获取文件夹结构差异的方法?例如目录更改? - Afshar Mohebi
实际上有三个问题... 统一的差异显示似乎不支持ShiftJIS,因此日语文本会变成乱码。 - iforce2d

3
你所描述的是两个Subversion版本之间的diff。请查看SVN Book关于svn diff的章节,了解如何执行此操作。

1

如果你只是想让同事获取最新的文件,他们应该使用svn-checkout从svn服务器获取。如果由于某些原因他们无法访问你的svn服务器,你也可以右键单击并选择svn-export;这将为你提供包含文件夹中所有文件的一组文件,而不包括任何隐藏的.svn目录。


请注意我的问题评论。此外,导出对我来说不是一个好选择。因为我只想发送更改过的文件。 - Afshar Mohebi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接