代码之家  ›  专栏  ›  技术社区  ›  joedevon

是否可以将Git提交挂接到保存在textmate上?

  •  2
  • joedevon  · 技术社区  · 14 年前

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

    不过,我还是想用textmate,因为我听说了很多关于它的事情。我知道有一个 feature request 对于未来的版本……但是我想知道是否有人找到了一个插件,或者其他的方法来让这个功能现在被移植到textmate中?我知道这是一个长期的问题,但从来没有伤害问。

    谢谢您。

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

    1 回复  |  直到 12 年前
        1
  •  6
  •   Florian Pilz Jörg W Mittag    12 年前

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

    #!/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