Schinken
Schinken

Reputation: 502

Auto commiting changes in a repository

we're trying to autocommit changes on legacy directories, where the people don't want to use something like version control (sigh).

I'm using gitpython to commit these changes every night:

repo = git.Repo(local_directory)

changed_files = [change.a_blob.path for change in repo.index.diff(None)]
if changed_files or repo.untracked_files:

   if changed_files:
      repo.git.add(update=True)

   if repo.untracked_files:
      repo.git.add(repo.untracked_files)

   repo.git.commit(message='Auto committed')
   repo.remotes.origin.push(repo.head)

Sometimes commit fails with "'git commit --message=Auto committed' returned with exit code 1" - which I can't reproduce

Is there something I did wrong? I've read that maybe I should use repo.index to make a commit?

Best, Christopher

Upvotes: 3

Views: 530

Answers (1)

michael scott paper
michael scott paper

Reputation: 26

You're absolutely right you'll need to use repo.index to make a commit. Here's a working sample from my script using GitPython (which incidentally helps us with version control)

repo = Repo(repo_dir)
index = repo.index

And then my commit_version function:

def commit_version(requested_version, commit_msg, index, version_file):
    """Commits version to index"""

    print "Committing: ", requested_version

    index.add([version_file])
    index.commit(commit_msg)

So you could just pass in "Auto committed" as your commit_msg. Hope this helps!

Upvotes: 1

Related Questions