# File lib/grit/git-ruby/git_object.rb, line 171 def format_mode "%06o" % @mode end
# File lib/grit/git-ruby/git_object.rb, line 158 def format_type case type when :link 'link' when :directory 'tree' when :file 'blob' when :submodule 'commit' end end
# File lib/grit/git-ruby/git_object.rb, line 175 def raw "%o %s\00%%s" % [@mode, @name, [@sha1].pack("H*")] end
# File lib/grit/git-ruby/git_object.rb, line 128 def type case @mode & S_IFMT when S_IFGITLINK @type = :submodule when S_IFLNK @type = :link when S_IFDIR @type = :directory when S_IFREG @type = :file else raise RuntimeError, "unknown type for directory entry" end end
# File lib/grit/git-ruby/git_object.rb, line 143 def type=(type) case @type when :link @mode = (@mode & ~S_IFMT) | S_IFLNK when :directory @mode = (@mode & ~S_IFMT) | S_IFDIR when :file @mode = (@mode & ~S_IFMT) | S_IFREG when :submodule @mode = (@mode & ~S_IFMT) | S_IFGITLINK else raise RuntimeError, "invalid type" end end
# File lib/grit/git-ruby/git_object.rb, line 116 def initialize(mode, filename, sha1o) @mode = 0 mode.each_byte do |i| @mode = (@mode << 3) | (i-'0'.getord(0)) end @name = filename @sha1 = sha1o if ![S_IFLNK, S_IFDIR, S_IFREG, S_IFGITLINK].include?(@mode & S_IFMT) raise RuntimeError, "unknown type for directory entry" end end