【发布时间】:2013-12-11 02:08:32
【问题描述】:
我知道 svn diff,但它只给出了我的工作副本和我上次从存储库中检出的当前版本之间的差异。
我想要今天的工作副本和昨天的工作副本之间的差异。 (可能就像 MS Word 中的“跟踪更改”。)
我正在处理大型代码库、数千个文件和文件夹、每个文件数千行。我目前在 Ubuntu VM 上进行代码编译,并通过 Windows 文件夹中的多个不同副本跟踪每个文件的不同版本。然后我还有另一个用于 SVN 提交的 Windows 文件夹工作副本。如果我想从 Linux 提交,我还有另一个用于 SVN 提交的 Ubuntu 目录工作副本。这变得相当混乱。希望有好的解决方案。
更新 1:
我最近在我的 Ubuntu VM 上创建了一个本地 SVN 服务器,它可以处理我所做的更改。但是我遇到了如何将更新的公司服务器源代码传输到我的本地服务器的问题,反之亦然。
所以这行不通。
更新 2:
我设法从公司服务器上存储库的主干创建了一个分支。 (感谢 Robert Levy 的建议。)
我在 Ubuntu 上使用 diff 和 patch 命令将所有更改转移到此分支。
此时我已经对源代码进行了很多更改,仅用于测试,所以我不会将这些更改合并到主干。
但是,我会进行后续更改,希望合并到主干中。
我预计会发生一些冲突,因为新更改(我想要合并)将是前一个更改(我不想合并)之前的一行,因此差异不会是干净的。
为了合并而创建另一个分支是个好主意吗?有哪些步骤或潜在的冲突解决方案?
更新 3:
希望我已经习惯了用 Tortoise SVN 合并树干和树枝。
(我应该在分支“to_test”还是分支“to_merge”或主干上编译?)一次一步。
更新 4:
我现在在 Ubuntu 的分支“to_test”上编辑和交叉编译工具链。时不时地,我将主干合并到分支“to_merge”,并将主干合并到分支“to_test”(解决任何冲突)。当我的功能完成后,我会将分支“to_test”中的选定更改合并到分支“to_merge”,然后将分支“to_merge”中的所有更改合并到主干。所有的合并都是在 Windows 上的 TortoiseSVN 和 KDiff3 中完成的,非常方便。
与手动制作单个文件的多个备份副本相比,这无疑是一个巨大的飞跃。
谢谢,堆栈交换。
更新 5:
我现在有两个分支:“理解”和“发展”。在“理解”分支中,我可以用大量 printk 调试语句乱扔它。在“开发”分支中,我只对所需功能进行必要的更改。功能完成后,我会将“开发”分支中的所有内容合并到主干。我的公司使用“稳定的主干”政策。 “主干”应该可以投入生产了。
在“理解”分支中,我在使用差异补丁后一次性提交了所有过去的手动更改。因此,不可能选择单独的更改进行合并。因此,我的“理解”分支和“发展”分支是相互独立的。
【问题讨论】:
标签: svn version-control commit working-directory