【问题标题】:Is it possible to hook a git commit to the save on Textmate?是否可以将 git 提交挂钩到 Textmate 上的保存?
【发布时间】:2013-02-06 20:02:22
【问题描述】:

让我成为 Eclipse 用户的一个特点是,每次您点击保存时,它的副本都会进入 Eclipse 本地历史记录。然后,您可以对本地历史进行比较。

不过,我还是喜欢使用 Textmate,因为我听说过它很棒。我知道有一个 feature request 用于未来的版本......但我想知道是否有人找到了一个插件,或者现在有什么其他方法可以将此功能硬塞到 Textmate 中?我知道这是一个很长的问题,但问起来永远不会有坏处。

谢谢。

更新! (由于上一个标题没有兴趣,因此编辑了问题的标题) 我刚刚意识到,也许这可能是一个解决方案。是否可以将 Textmate 保存到 git commit 中?

【问题讨论】:

  • 如何在 TextMate 中保存?一种可能的 hack 解决方案是编写一个包条目,该条目保存文件然后进行提交,然后将 command-s 重新绑定到该包条目。但是如果你使用 File > Save 来保存,那么这对你没有任何好处......如果这可能有帮助,lmk,我会把它写下来作为答案。
  • 谢谢乔希,那太好了!

标签: git textmate


【解决方案1】:

您想要的是:创建一个新命令,将“保存”设置为“当前文件”(此选项位于文本区域上方),“输入”设置为“整个文档”,“输出”设置为“显示为工具”小费”。现在将下面的代码复制到文本区域并将 Command-S 指定为命令键绑定。

#!/usr/bin/env ruby
filename = ENV["TM_FILEPATH"].split("/").last
`git add #{ENV["TM_FILEPATH"]}`
`git commit -m "#{filename}"`

每次您输入 Command-S 时,文件都会被保存并提交到(已经存在的)git 存储库。如果文件没有被更改,则不会进行任何提交,因为 git 会阻止提交。

下面我扩展了命令以弹出提交消息的对话框,并在未找到 git 存储库时发出很好的警告。你应该能够自己弄清楚其余的。 :)

#!/usr/bin/env ruby
require ENV['TM_SUPPORT_PATH'] + '/lib/ui'

filename = ENV["TM_FILEPATH"].split("/").last
message = TextMate::UI.request_string(
    :title => "Commiting changes of #{filename}",
    :prompt => "Please enter the commit message for your changes."
)

add = `git add #{ENV["TM_FILEPATH"]} 2>&1`
commit = `git commit -m "#{message}" 2>&1`

git_answer = add + commit
unless git_answer.grep(/fatal/).empty?
  puts "Please initialize git repository first!"
end

【讨论】:

  • @joedevon git 在你的 $PATH 变量中吗? (在终端中尝试“echo $PATH”。)如果是,它是否已为所有程序加载,即不在某些登录挂钩中,如 .login 文件? (TextMate 不会使用该文件。)
  • 忘了提到我确实将 git 放入 $PATH 并且它运行良好,现在将您的弹出窗口添加到 Command-S 并将非弹出窗口添加到 Command-Shift-S。
猜你喜欢
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 2015-04-20
  • 2017-12-30
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多