2011-10-09 2 views
0

Je construis une tâche de râteau rails pour vérifier l'actif immobilisé et en cours d'exécution sur les questions: erreurs:Comment archiver des actifs dans une tâche Rake?

# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 
# 
# Changes not staged for commit: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 

Voici les commandes dans la tâche de coupe:

def push_assets 
    puts "===== Pushing assets to github..." 

    system("git add public/assets") 
    system("git commit -m 'production prepared assets' ") 
    system("git push") 

    puts "===== Push complete..." 
end 

Toutes les idées ce qui est mal fait dans la méthode? Merci

Répondre

2

On dirait que vous avez déjà engagé les modifications. (Avez-vous exécutez ce script une fois avant?)

Pour rétablir la commettras, vous pouvez faire git reset HEAD^

Pour rendre votre idempotent de tâches, vous pouvez utiliser git status --porcelain ou git diff --name-only ou quelque chose pour voir s'il y a des changements à vérifier -in dans les actifs. S'il y en a, alors continuez avec le commit.

+0

Où devrais-je réinitialiser git? Je ne veux pas tout réinitialiser juste le assetoy directoy? Je voudrais éviter une erreur si quelqu'un exécute la tâche râteau deux fois? – AnApprentice

+0

Le dernier commit n'a probablement fait que l'ajout du répertoire assets et l'a validé. Donc 'git reset HEAD ^' ne ferait que ça. Pour rendre votre tâche idempotente, vous pouvez utiliser 'git status --porcelain' ou quelque chose pour voir s'il y a des changements à enregistrer dans les assets. – manojlds

Questions connexes