Domanda

Qualcuno sa come creare un commit usando i legami rubini (la gemma "robusto") per libgit2? Ho provato tutti gli esempi che riesco a trovare, sulla Guida all'utilizzo di BIGGIT2 e sulla pagina Gem Gem GitHub, e nessuno degli exampes per creare o modificare un commit sta funzionando.

Questo è stato utile nel cercare di capire come commettere finora, tranne che è per libgit2 stesso e non i legami rubini. http://librelist.com/browser//libgit2/2011//19/19iting-a-repository-adding-files-to-the-index-and-committing/#d94ce8df18ff0202ce904180286A4A85 .

Quando provo a commettere un commit, seguendo i passaggi sulla robusta pagina GitHub, ottengo questo;

pry(main)> Rugged::Commit.create( repo, :author=>author, :message=>"Hello world\n\n", :committer=>author, :parents=>parents, :tree=>tree )
TypeError: wrong argument type nil (expected String)
.

E quando provo a seguire la Guida all'utilizzo della libgit2, che sostanzialmente dice di ottenere il commit e quindi semplicemente modificarlo usando i comandi commit.message= come i comandi, ma poi ottengo NomethoDerrors perché non c'è "messaggio=" Metodo.

Libgit2 Guida all'utilizzo: http://libgit2.github.com/api.html < br >. Documentazione robusta 0: http://rubydoc.info/gems/rugject/0.16.0/frames
. Robusto GitHub Pagina: https://github.com/libgit2/ruged

Modifica: come riproduttore questo; http://pastebin.com/wnta8fwm
Edit_n + 1: Ho anche provato a usare lo SHA dell'albero anziché un oggetto robusto :: albero, provando

x=Rugged::Commit.create( repo, :author=>author, :message=>"Hello world\n\n", :committer=>author, :parents=>parents, :tree=>tree.oid )
.

Ma questo ha appena prodotto la stessa identica output di errore come prima.

È stato utile?

Soluzione 2

TL; DR --- Questo è ciò che è stato risolto per me: gem install --prerelease rugged

Dopo alcuni scavo e molto sperimentare, penso di aver capito il problema.

Quando ho fatto gem install rugged mi ha dato la versione 0.16.0. Questa è stata la versione con cui stavo avendo problemi, e quando ho provato i test che sono venuti con la gemma che molti dei test fallirono e molti di quelli che falliscono sembravano correlati a commettere e scrivere commit.

La pagina Rubygems per il Gemma robusto mostra che è disponibile una versione da 0.17.0.b6, che mi ha confuso perché non avevo mai incontrato l'opzione "--prerelease" per gem. Quella versione deve essere un prerelease perché dopo aver eseguito la versione gem install --prerelease rugged 0.17.0.b6 è stata installata (pure).

Ora con 0.17.0.b6 Sono in grado di seguire la documentazione senza problemi.

Una nota extra, la documentazione che ho letto non ha menzionato, ma il codice sorgente in ext/rugged_commit.c ha commenti che menzionano un'opzione :update_ref=>'' durante la creazione di un commit che è possibile utilizzare per aggiornare il ref per puntare al nuovo commit . Senza questa opzione, il commit verrà creato e scritto all'OCB, ma nessun riferimento verrà aggiornato e quindi il commit non sarà accessibile da nessuna delle tue filiali.

Altri suggerimenti

Rugged::Commit.create(repo, data) non è ciò che è in the readme.Che codice stai correndo?Sembra semplicemente che ti manca un campo obbligatorio.Quali campi stai riempiendo e come?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top