Skip to content
  • Linus Torvalds's avatar
    Add ".git/config" file parser · 17712991
    Linus Torvalds authored
    
    
    This is a first cut at a very simple parser for a git config file.
    
    The format of the file is a simple ini-file like thing, with simple
    variable/value pairs. You can (and should) make the variables have a
    simple single-level scope, ie a valid file looks something like this:
    
    	#
    	# This is the config file, and
    	# a '#' or ';' character indicates
    	# a comment
    	#
    
    	; core variables
    	[core]
    		; Don't trust file modes
    		filemode = false
    
    	; Our diff algorithm
    	[diff]
    		external = "/usr/local/bin/gnu-diff -u"
    		renames = true
    
    which parses into three variables: "core.filemode" is associated with the
    string "false", and "diff.external" gets the appropriate quoted value.
    
    Right now we only react to one variable: "core.filemode" is a boolean that
    decides if we should care about the 0100 (user-execute) bit of the stat
    information. Even that is just a parsing demonstration - this doesn't
    actually implement that st_mode compare logic itself.
    
    Different programs can react to different config options, although they
    should always fall back to calling "git_default_config()" on any config
    option name that they don't recognize.
    
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    Signed-off-by: default avatarJunio C Hamano <junkio@cox.net>
    17712991