Search code examples
pythongitpython

empty commit with Repo.commit()


I'm trying to do something like repo.git.commit('-m', 'test commit', author='sunilt@xxx.com') but instead of the author, I want to pass the --allow-empty to send a dummy commit to the repo. but the repo.git.commit() complains about the number of arguments I'm trying to pass. This is what I have so far:

from git import Repo
import os
from dotenv import load_dotenv

load_dotenv()

full_local_path = os.getenv('full_local_path')
username = os.getenv('username')
password = os.getenv('password')

remote = f"https://{username}:{password}@github.com:myRepo/myRepo.git"
Repo.clone_from('git@github.com:myRepo/myRepo.git', full_local_path)
Repo.git.commit('-m', 'empty commit', author='xxxxxxxxx')`

Solution

  • You're ignoring the return value from Repo.clone_from, which is the Repo object on which you'll operate in subsequent commands. You want something like:

    >>> from git import Repo
    >>> r = Repo.clone_from('https://github.com/octocat/Hello-World', 'hello-world')
    >>> r.git.commit('-m', 'empty commit', '--allow-empty')
    '[master 8d7508e] empty commit'