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

joe*_*von 2 git textmate

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

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

谢谢.

UPDATE! (编辑问题的标题,因为上一个标题没有兴趣) 我刚刚意识到这可能是一个解决方案.是否可以将Textmate保存挂钩到git提交中?

Flo*_*ilz 6

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

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

每次键入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
Run Code Online (Sandbox Code Playgroud)