git-gui: Generate blame on uncommitted working tree file
[gitweb.git] / lib / blame.tcl
index 37ce3e7a86a828d35369f2e7b59a94456c13e637..8ac0104187e4a06fd70b93c68134d875613f7c32 100644 (file)
@@ -170,8 +170,12 @@ constructor new {i_commit i_path} {
        bind $top <Visibility> "focus $top"
        bind $top <Destroy> [list delete_this $this]
 
-       set cmd [list git cat-file blob "$commit:$path"]
-       set fd [open "| $cmd" r]
+       if {$commit eq {}} {
+               set fd [open $path r]
+       } else {
+               set cmd [list git cat-file blob "$commit:$path"]
+               set fd [open "| $cmd" r]
+       }
        fconfigure $fd -blocking 0 -translation lf -encoding binary
        fileevent $fd readable [cb _read_file $fd]
 }
@@ -194,7 +198,13 @@ method _read_file {fd} {
        if {[eof $fd]} {
                close $fd
                _status $this
-               set cmd [list git blame -M -C --incremental $commit -- $path]
+               set cmd [list git blame -M -C --incremental]
+               if {$commit eq {}} {
+                       lappend cmd --contents $path
+               } else {
+                       lappend cmd $commit
+               }
+               lappend cmd -- $path
                set fd [open "| $cmd" r]
                fconfigure $fd -blocking 0 -translation lf -encoding binary
                fileevent $fd readable [cb _read_blame $fd]