module SyncWrap::GitHelp
Utility methods for sync file/sources kept in a git repository.
Public Class Methods
clean_hash()
click to toggle source
Return a lambda that will require_clean! for callers path before providing git_hash. Use this for cases where you only want to use a git hash when it is an accurate reflection of the local file state. Since the test is deferred, it will only be required for actions (i.e. image creation, etc.) that actually use it.
# File lib/syncwrap/git_help.rb, line 48 def self.clean_hash cpath = caller_path( caller ) lambda do require_clean!( cpath ) git_hash( cpath ) end end
git_hash( path = nil )
click to toggle source
Return the abbreviated SHA-1 hash for the last git commit at path
# File lib/syncwrap/git_help.rb, line 38 def self.git_hash( path = nil ) path ||= caller_path( caller ) %x`cd #{path} && git log -n 1 --format='format:%h'` end
require_clean!( path = nil )
click to toggle source
Raises RuntimeError if the git tree at path (default to caller's path) is not clean
# File lib/syncwrap/git_help.rb, line 27 def self.require_clean!( path = nil ) path ||= caller_path( caller ) delta = %x`cd #{path} && git status --porcelain -- . 2>&1` if delta.split( /^/ ).length > 0 warn( "Commit or move these first:\n" + delta ) raise "Git repo at #{path} not clean" end end