How to use the gitdb.util.LockedFD function in gitdb

To help you get started, we’ve selected a few gitdb examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github gitpython-developers / gitdb / test / test_util.py View on Github external
lfd.commit()
			lfd.rollback()
			
			# test reading
			lfd = LockedFD(my_file)
			rfd = lfd.open(write=False)
			assert os.read(rfd, len(orig_data)) == orig_data
			
			assert os.path.isfile(lockfilepath)
			# deletion rolls back
			del(lfd)
			assert not os.path.isfile(lockfilepath)
			
			
			# write data - concurrently
			lfd = LockedFD(my_file)
			olfd = LockedFD(my_file)
			assert not os.path.isfile(lockfilepath)
			wfdstream = lfd.open(write=True, stream=True)		# this time as stream
			assert os.path.isfile(lockfilepath)
			# another one fails
			self.failUnlessRaises(IOError, olfd.open)
			
			wfdstream.write(new_data)
			lfd.commit()
			assert not os.path.isfile(lockfilepath)
			self._cmp_contents(my_file, new_data)
			
			# could test automatic _end_writing on destruction
		finally:
			os.remove(my_file)
		# END final cleanup
github gitpython-developers / gitdb / test / test_util.py View on Github external
assert os.path.isfile(lockfilepath)
			# another one fails
			self.failUnlessRaises(IOError, olfd.open)
			
			wfdstream.write(new_data)
			lfd.commit()
			assert not os.path.isfile(lockfilepath)
			self._cmp_contents(my_file, new_data)
			
			# could test automatic _end_writing on destruction
		finally:
			os.remove(my_file)
		# END final cleanup
		
		# try non-existing file for reading
		lfd = LockedFD(tempfile.mktemp())
		try:
			lfd.open(write=False)
		except OSError:
			assert not os.path.exists(lfd._lockfilepath())
		else:
			self.fail("expected OSError")
		# END handle exceptions
github gitpython-developers / gitdb / test / test_util.py View on Github external
lfd.rollback()
			
			# test reading
			lfd = LockedFD(my_file)
			rfd = lfd.open(write=False)
			assert os.read(rfd, len(orig_data)) == orig_data
			
			assert os.path.isfile(lockfilepath)
			# deletion rolls back
			del(lfd)
			assert not os.path.isfile(lockfilepath)
			
			
			# write data - concurrently
			lfd = LockedFD(my_file)
			olfd = LockedFD(my_file)
			assert not os.path.isfile(lockfilepath)
			wfdstream = lfd.open(write=True, stream=True)		# this time as stream
			assert os.path.isfile(lockfilepath)
			# another one fails
			self.failUnlessRaises(IOError, olfd.open)
			
			wfdstream.write(new_data)
			lfd.commit()
			assert not os.path.isfile(lockfilepath)
			self._cmp_contents(my_file, new_data)
			
			# could test automatic _end_writing on destruction
		finally:
			os.remove(my_file)
		# END final cleanup
github gitpython-developers / gitdb / test / test_util.py View on Github external
def test_lockedfd(self):
		my_file = tempfile.mktemp()
		orig_data = "hello"
		new_data = "world"
		my_file_fp = open(my_file, "wb")
		my_file_fp.write(orig_data)
		my_file_fp.close()
		
		try:
			lfd = LockedFD(my_file)
			lockfilepath = lfd._lockfilepath() 
			
			# cannot end before it was started
			self.failUnlessRaises(AssertionError, lfd.rollback)
			self.failUnlessRaises(AssertionError, lfd.commit)
			
			# open for writing
			assert not os.path.isfile(lockfilepath)
			wfd = lfd.open(write=True)
			assert lfd._fd is wfd
			assert os.path.isfile(lockfilepath)
			
			# write data and fail
			os.write(wfd, new_data)
			lfd.rollback()
			assert lfd._fd is None
github gitpython-developers / gitdb / gitdb / ref / symbolic.py View on Github external
raise TypeError("Require commit, got %r" % obj)
		#END verify type
		
		oldbinsha = None
		if logmsg is not None:
			try:
				oldbinsha = self.commit.binsha
			except ValueError:
				oldbinsha = Commit.NULL_BIN_SHA
			#END handle non-existing
		#END retrieve old hexsha
		
		fpath = self.abspath
		assure_directory_exists(fpath, is_file=True)
		
		lfd = LockedFD(fpath)
		fd = lfd.open(write=True, stream=True)
		fd.write(write_value)
		lfd.commit()
		
		# Adjust the reflog
		if logmsg is not None:
			self.log_append(oldbinsha, logmsg)
		#END handle reflog
		
		return self
github florath / rmtoo / rmtoo / contrib / GitPython-0.3.2.RC1 / git / refs / symbolic.py View on Github external
raise TypeError("Require commit, got %r" % obj)
		#END verify type
		
		oldbinsha = None
		if logmsg is not None:
			try:
				oldbinsha = self.commit.binsha
			except ValueError:
				oldbinsha = Commit.NULL_BIN_SHA
			#END handle non-existing
		#END retrieve old hexsha
		
		fpath = self.abspath
		assure_directory_exists(fpath, is_file=True)
		
		lfd = LockedFD(fpath)
		fd = lfd.open(write=True, stream=True)
		fd.write(write_value)
		lfd.commit()
		
		# Adjust the reflog
		if logmsg is not None:
			self.log_append(oldbinsha, logmsg)
		#END handle reflog
		
		return self
github gitpython-developers / gitdb / gitdb / ref / log.py View on Github external
def to_file(self, filepath):
		"""Write the contents of the reflog instance to a file at the given filepath.
		:param filepath: path to file, parent directories are assumed to exist"""
		lfd = LockedFD(filepath)
		assure_directory_exists(filepath, is_file=True)
		
		fp = lfd.open(write=True, stream=True)
		try:
			self._serialize(fp)
			lfd.commit()
		except:
			# on failure it rolls back automatically, but we make it clear
			lfd.rollback()
			raise
		#END handle change