2017-10-05 7 views
1

J'utilise Haskell Stack, et le code source du paquet que je construis est sur git. Mon stack.yaml ressemble à ceci:Récupérer la dernière version du paquet de git

packages: 
- location: 
    git: [email protected]:mhwombat/blah-blah-blah.git 
    commit: master 
. . . 

Tout se construit bien. Toutefois, supposons que le code source soit mis à jour dans le référentiel. La pile ne récupère pas la dernière version; il continue à utiliser la version qu'il a déjà. Ma solution jusqu'à présent est de supprimer .stack-work et faire un autre stack build, mais bien sûr, il doit tout reconstruire. Lorsque vous utilisez un objectif, cela prend beaucoup de temps.

Existe-t-il un moyen de forcer Stack à récupérer la dernière version de git?

Déjà essayé stack update et stack clean, mais ils ne résolvent pas ce problème.

Répondre

1

Il y a une façon, mais c'est fastidieux au lieu de master comme le commit, placez le SHA1 de la dernière validation. Vous pouvez obtenir la dernière commettras en exécutant:

git rev-parse origin/master 

La sortie devrait ressembler à ceci: de7059a7a7c81c9c8997cad6dce7cdbd5b6c09d9

Ensuite, dans votre stack.yaml vous placeriez ceci:

packages: 
- location: 
    git: [email protected]:mhwombat/blah-blah-blah.git 
    commit: de7059a7a7c81c9c8997cad6dce7cdbd5b6c09d9 
. . . 

Et vous auriez "forcé" pile pour récupérer la dernière validation lorsque vous exécutez stack build non n EED pour supprimer .stack-work plus. Ce n'est pas aussi simple qu'une seule commande mais ça a fonctionné pour moi et ce n'était pas trop ennuyeux, en prime pour moi ça m'a aidé à geler une dépendance. Ceci est scriptable car il utilise seulement git, même si ce n'était pas assez fatigant que j'ai fait un script.