Guest User

Untitled

a guest
Apr 23rd, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. ########################################################################################################
  4. # Usage: #
  5. # gitchdiff [-r<left rev>:<right-rev>] [repository] #
  6. # #
  7. # Example: #
  8. # gitchdiff # == gitchdiff -rHEAD^:HEAD . #
  9. # gitchdiff -rHEAD^^:HEAD # == gitchdiff -rHEAD^^:HEAD . #
  10. # gitchdiff /path/to/git/repository # == gitchdiff -rHEAD^:HEAD /path/to/git/repository #
  11. # gitchdiff -rHEAD^:HEAD /path/to/git/repository # == gitchdiff -rHEAD^:HEAD /path/to/git/repository #
  12. ########################################################################################################
  13.  
  14. def checkout(origin, rev)
  15. tmp = "/tmp/git_chdiff_#{rand}.tmp"
  16. Dir.mkdir tmp
  17. Dir.chdir tmp
  18. system "git init"
  19. system "git pull '#{origin}'"
  20. system "git checkout '#{rev}'"
  21. return tmp
  22. end
  23.  
  24. def diff(origin, revs={})
  25. revs = {:left=>"HEAD^",:right=>"HEAD"}.merge(revs)
  26. left = checkout origin, revs[:left]
  27. right = checkout origin, revs[:right]
  28. system "chdiff '#{left}' '#{right}'"
  29. end
  30.  
  31. revs = {}
  32. git_dir = Dir.pwd
  33. ARGV.each do |arg|
  34. if arg[0,2] == "-r"
  35. rev_strings = arg[2..-1].split(':')
  36. case rev_strings.size
  37. when 1
  38. revs[:left] = rev_strings[0] unless rev_strings[0].empty?
  39. when 2
  40. revs[:left] = rev_strings[0] unless rev_strings[0].empty?
  41. revs[:right] = rev_strings[1] unless rev_strings[1].empty?
  42. else
  43. revs = nil
  44. end
  45. else
  46. git_dir = arg unless arg.empty?
  47. end
  48. end
  49.  
  50. diff(git_dir, revs)
Add Comment
Please, Sign In to add comment