3

当文件从他们下面更改时,许多编辑者会注意到。如果您对文件进行了未保存的编辑,是否有任何编辑器可以让您进行三向合并?

常见的情况是我忘记在更新 SVN 之前保存文件,当我切换回我的编辑器时,我意识到我现在可以选择踩下刚刚所做的更新、放弃我的更改或进行复制/paste/external-diff-tool 歌舞。

是的,我知道在我更新之前正确的解决方案是 ctrl+s,但我是人类,并且想要一个非常简单的解决方案来解决问题,然后我把它搞砸了。

4

6 回答 6

2

EditPad Pro,当它检测到您已打开但未保存更改的文件已在磁盘上更改时,会询问您是否要从磁盘重新加载文件,忽略磁盘上的更改,或查看磁盘上的文件与具有您已打开的未保存更改的版本。

那是双向差异,而不是您要求的三向差异。我不知道有任何文本编辑器会提供三向差异。如果磁盘上的文件已被破坏,则文本编辑器不再拥有原始文件的副本。这将是版本控制要解决的问题。

预防措施可能是让您的编辑器锁定您已打开的文件。然后 SVN 更新将在您在编辑器中打开的任何文件上失败。在 EditPad Pro 中,选项、首选项、文件中有一个选项。

于 2009-01-30T14:13:27.193 回答
1

使用 vim,您可以使用:DiffOrig进入差异模式。
可以使用:checkt强制检查修改

要使其自动化,您可以将以下内容放入您的 .vimrc:

au FileChangedShell * DiffOrig

一旦 Vim 意识到文件 (mtime) 发生了变化,Vim 就会进入 diff 拆分。

于 2009-01-20T19:48:15.960 回答
1

听起来像是解决文件在您脚下被修改的问题的不好方法。正如我通常回答的那样:你真正想解决什么问题?

于 2009-01-20T19:53:57.367 回答
1

我很少遇到这种情况,可能是因为我的手指一不做任何事情就保存,而不必真正考虑它。

否则,我建议您找到一个集成到您的编辑器中的 SVN 客户端。大多数此类客户端会在提交或更新之前自动(或要求)保存。

于 2009-01-20T20:27:24.493 回答
1

因此,您对文件进行了未保存的更改,然后对该文件进行了 SVN 更新,对吗?

在这种情况下,您应该在更新后保存更改并再次运行 SVN 更新。第二次运行 SVN 更新将尝试合并存储库中的更改并告诉您是否存在冲突。

更多/最重要的更改是编辑器中未保存的更改,SVN 更新中的更改始终可以从存储库中再次拉出。

于 2009-01-30T14:25:55.857 回答
0

这似乎是源代码控制的问题,而不是编辑器。

当然,Emacs 可以通过编程来做到这一点,但默认情况下,它似乎只是询问您是否要保存更改的文件。尝试编辑已更改的文件将为您提供将缓冲区恢复为文件内容的选项。

Vi(至少我正在使用的版本)甚至不检查文件是否已更改。(在我编辑它之前它也不检查文件是否是只读的,这让我发疯。也许我需要找到一个更好的 vi。)

于 2009-01-20T18:24:22.557 回答