我该如何使用特定于回购协议的VIM撤消目录(undodir),而不向克隆该回购协议的所有人透露我的路径结构?

时间:2018-09-26 15:02:37

标签: git vim

我最近发现了VIM的持久撤消功能,我喜欢它,因为它允许我返回并根据需要微调git commit。

当前,我所有的VIM撤消文件都是与每个编辑文件一起简单创建的。这可以正常工作,但是会乱丢源代码树。它看起来不专业且杂乱无章。

因此,我遇到了一个在本地(特定于项目的).vimrc中使用的设置,该设置使我可以将所有撤消文件存储在相对于工作目录的目录中。除了VIM然后选择命名这些文件的方式(这是使用完整路径来创建文件名以确保唯一性)之外,这将是完美的。显然,此功能旨在用于指定目录,例如~/.vimundo,以保留多个项目的撤消文件。但是,这不是我要使用的方式。我希望每个项目都使用它,而不必担心系统的其余部分。

.vimrc:

set undodir=./.vimundo/
set undofile

这将在项目的./.vimundo目录中为项目中的每个已编辑文件创建一个类似的文件(此文件用于项目的.vimrc):

%home%douglas%Projects%auto_gen_projects%cmake_project_files%.vimrc

除了我希望从相对路径创建文件名之外,这几乎是完美的。我可能想重新组织我的项目,而不必丢失或重命名撤消文件。此外,我不希望陌生人在推送存储库时了解我的个人文件结构。

在设置undodir选项时,是否有一种有效的方法来将撤消文件与源树分开,而VIM却没有选择创建文件的命名方式?

还是有一种更好的方法来完成我想要的工作,仅仅是使用特定于项目,与位置无关的撤消文件,这些文件不会冒犯我的源代码树,同时仍将它们保存在存储库中? >

1 个答案:

答案 0 :(得分:0)

我强烈建议使用Git(私有分支,隐藏项或类似的东西-Git在这里非常适应),以便能够“返回并微调我的提交”?对我而言,这更有意义。我认为撤消是短期和短暂的,而Git是长期和永久的。

我已经评论过,并且在您确认后,我认为至少对我来说等于是一个购物狂: Vim的撤消功能会跟踪所有更改,无法进行修改 。现在想象一下,您不小心将密码,访问令牌或成人网站的URL粘贴到Vim (我一直这样做-就是偶然粘贴),立即撤消该操作,但是它将仍然可以通过持久撤消来访问(因为Vim不仅保留顺序历史记录,而且保留完整的分支)。您必须明确清除撤消历史记录(:set ul=-1),或者希望进行足够的修改(默认为1000),以便在提交更改之前从历史记录中撤消更改。

一旦致力于Git(并推送到 GitHub 之类的公共位置),这些更改基本上就是公共记录,并且即使不是没有可能很难消除。尽管对您进行实际“攻击”的可能性很小,但我不会使用这样的过程。

替代项

如果您不想将中间更改存储为Git工件,则还有其他可能性可以将某些版本存储一段时间。例如,我的writebackup plugin提供了一个轻量级的版本控制系统,完全不会干扰Git(您可以将备份存储在工作副本外部,或者git忽略备份文件或专用的备份目录,该目录从以下位置收集所有备份)在工作副本中)。