是否有可能将git提交挂钩到Textmate上的保存?

时间:2010-11-29 19:18:24

标签: git textmate

让我成为Eclipse用户的一个功能是每次点击保存时,它的副本都会进入Eclipse本地历史记录。然后你可以在本地历史上做差异。

尽管如此,我还是想使用Textmate,因为我听到了很多关于它的事情。我知道未来的版本会有feature request ...但是我想知道是否有人找到了插件,或者其他一些方法让这个功能现在变成了Textmate?我知道这是一个远景,但从来没有伤害过要求。

谢谢。

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

1 个答案:

答案 0 :(得分:6)

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