12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import os
- import sys
- from io import RawIOBase
- from dulwich import porcelain
- from dulwich.client import get_transport_and_path
- from dulwich.porcelain import get_remote_repo
- from dulwich.repo import Repo
- from dulwich.walk import Walker
- def ro():
- os.system("/etc/init.d/S01mount_ro start")
- def rw():
- os.system("/etc/init.d/S01mount_ro stop")
- class NoneStream(RawIOBase):
- """Fallback if stdout or stderr are unavailable, does nothing."""
- def read(self, size=-1):
- return None
- def readall(self):
- return None
- def readinto(self, b):
- return None
- def write(self, b):
- return None
- def log(localRep):
- repo = Repo(localRep)
- walker = Walker(repo, sorted(repo.get_refs().values(), reverse=True))
- for entry in walker:
- commit = entry.commit
- print(f"commit {commit.id.decode()}")
- print(f"Author: {commit.author.decode()} <{commit.author.decode()}>")
- print(f"Date: {commit.author_time}")
- print()
- print(f" {commit.message.decode()}")
- print()
- def showChanges(localRep, outStream=sys.stdout):
- porcelain.show(localRep, outstream=outStream)
- def activeBranch(localRep):
- return porcelain.active_branch(localRep)
- def checkout(localRep, branch, progStream=None):
- r = Repo(localRep)
- if progStream is None:
- progStream = NoneStream()
- try:
- porcelain.checkout_branch(r, 'origin/' + branch, outstream=progStream)
- except porcelain.CheckoutError as e:
- print("CheckoutError:", e)
- porcelain.reset(r, 'hard')
- porcelain.checkout_branch(r, 'origin/' + branch, outstream=progStream)
- def pull(repo_path, progStream=None):
- if progStream is None:
- progStream = NoneStream()
- porcelain.pull(repo_path, refspecs=porcelain.active_branch(repo_path), outstream=progStream)
- def isOnline(localRep):
- r = Repo(localRep)
- (remote_name, remote_location) = get_remote_repo(r, None)
- client, path = get_transport_and_path(
- remote_location, config=r.get_config_stack()
- )
- try:
- client.fetch(path, r)
- return True
- except Exception:
- return False
|