diff options
| author | Sebastian Thiel <byronimo@gmail.com> | 2010-11-15 12:13:59 +0100 | 
|---|---|---|
| committer | Sebastian Thiel <byronimo@gmail.com> | 2010-11-15 12:13:59 +0100 | 
| commit | 4d36f8ff4d1274a8815e932285ad6dbd6b2888af (patch) | |
| tree | 0695bd109d491ffab1cc3890814f0b37a7677405 /lib/git/config.py | |
| parent | a1e2f63e64875a29e8c01a7ae17f5744680167a5 (diff) | |
| download | gitpython-4d36f8ff4d1274a8815e932285ad6dbd6b2888af.tar.gz | |
Improved GitConfigurationParser to better deal with streams and the corresponding locks. Submodule class now operates on parent_commits, the configuration is either streamed from the repository or written directly into a blob ( or file ) dependending on whether we have a working tree checkout or not which matches our parent_commit
Diffstat (limited to 'lib/git/config.py')
| -rw-r--r-- | lib/git/config.py | 12 | 
1 files changed, 8 insertions, 4 deletions
| diff --git a/lib/git/config.py b/lib/git/config.py index e919838b..8541dc0e 100644 --- a/lib/git/config.py +++ b/lib/git/config.py @@ -271,9 +271,9 @@ class GitConfigParser(cp.RawConfigParser, object):  			if not hasattr(file_object, "seek"):  				try:  					fp = open(file_object) +					close_fp = True  				except IOError,e:  					continue -				close_fp = True  			# END fp handling  			try: @@ -308,17 +308,21 @@ class GitConfigParser(cp.RawConfigParser, object):  		:raise IOError: if this is a read-only writer instance or if we could not obtain   			a file lock"""  		self._assure_writable("write") -		self._lock._obtain_lock() -		  		fp = self._file_or_files  		close_fp = False +		# we have a physical file on disk, so get a lock +		if isinstance(fp, (basestring, file)): +			self._lock._obtain_lock() +		# END get lock for physical files +		  		if not hasattr(fp, "seek"):  			fp = open(self._file_or_files, "w")  			close_fp = True  		else:  			fp.seek(0) +		# END handle stream or file  		# WRITE DATA  		try: @@ -390,7 +394,7 @@ class GitConfigParser(cp.RawConfigParser, object):  		return valuestr  	@needs_values -	@set_dirty_and_flush_changes	 +	@set_dirty_and_flush_changes  	def set_value(self, section, option, value):  		"""Sets the given option in section to the given value.  		It will create the section if required, and will not throw as opposed to the default  | 
