2016-02-24 2 views
3

Nous essayons d'auto-valider les modifications sur les anciens répertoires, où les utilisateurs ne veulent pas utiliser le contrôle de version (soupir).Validation automatique des modifications dans un référentiel

J'utilise gitpython pour valider ces modifications tous les soirs:

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) 

commettras Parfois échoue avec "git commit --message = Auto engagé" retourné avec le code de sortie 1" - que je ne peux pas reproduire

Y at-il quelque chose que j'ai mal fait? J'ai lu que peut-être je devrais utiliser repo.index pour faire un commit?

Best, Christopher

Répondre

1

Vous avez absolument raison, vous aurez besoin d'utiliser repo.index pour faire une validation. Voici un exemple de travail de mon script en utilisant GitPython (qui nous aide d'ailleurs avec le contrôle de version)

repo = Repo(repo_dir) 
index = repo.index 

Et puis ma fonction commit_version:

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) 

vous pouvez donc passer « Auto commis » comme commit_msg. J'espère que cela t'aides!

+0

Merci pour votre commentaire! Donc pousser avec repo.remotes.origin.push (repo.head) est toujours le même? – Schinken

+1

Oui, le 'repo.remotes.origin.push' est correct ... bien que vous puissiez vous en sortir sans inclure' repo.head' –