2013-12-16 9 views
8

seguito this answer e my own question, ho una semplice domanda (spero).Perché Gerrit non è in grado di creare succursali da solo?

Se sto spingendo un ramo particolare con tutti arbitri richiesti correttamente impostati:

git checkout 82-blah-blah 
git push origin HEAD:refs/for/82-blah-blah 

Perché devo sempre avere:

! [remote rejected] HEAD -> refs/for/82-blah-blah (branch 82-blah-blah not found) 

e ho sempre andare a UI di Gerrit e creare quel ramo manualmente?

non è che un passo ovvio, che Gerrit potrebbe semplicemente automatizzare? O mi sta sfuggendo qualcosa?

+0

come soluzione alternativa, prima fare una spinta diretta iniziale per creare il ramo stesso – HiB

+0

Se lo faccio, il ramo verrà creato, ma la modifica stessa (in Gerrit) ** non verrà ** e mi perderò con un casino, incapace di risolvere questa situazione. Vedere queste due mie domande: [uno] (http://stackoverflow.com/q/20542903/1469208) e [due] (http://stackoverflow.com/q/20606552/1469208). – trejder

+1

prima creare il ramo locale senza nuove modifiche - 'git checkout -b origine/master', quindi il telecomando:' git push origine 'o tramite l'interfaccia utente Gerrit – HiB

risposta

1

Questa funzione was implemented molto recentemente e sarà disponibile in Gerrit v2.9.

+1

OMG! Fino alla versione '2.9' con tale caratteristica fondamentale di base non implementata! :] Comanda – trejder

+3

AFAICT la nuova creazione ramo REST e SSH che sarà disponibile in Gerrit 2.9 non affrontare il problema originale.Sono solo due nuovi modi di creare manualmente i rami, ma dal giorno in cui una creazione di ramo è stata resa disponibile tramite 'git push'. Sospetto che l'opinione di @trejder sul fatto che questa sia una "caratteristica fondamentale e fondamentale" deriva da un fraintendimento che la creazione di una filiale è un'attività comune che viene eseguita più o meno sempre quando si carica una modifica, quando in realtà è un'operazione rara che gli utenti non sono in genere " t permesso di fare. –

+0

@ MagnusBäck: ti sbagli. La nuova feauture creerà il branch di destinazione * dopo * questo commit passa la revisione, che è OP che desidera – mvp

17

La risposta accettata si riferisce a una funzionalità che consente agli utenti di creare la diramazione tramite SSH, tutto ciò che aggiunge è lo CreateBranchCommand. L'originale issue request potrebbe effettivamente riferirsi a ciò che @trejder vuole, ma l'implementazione è solo un ramo di creazione attraverso un comando SSH.

Ho avuto l'impressione che se avete la creazione di riferimento destra si può spingere a ref/per/new-ramo, ma mi sbagliavo, appena provato e non funziona. Permette solo di creare nuovi rami ma di spingerli direttamente.

che il modo più veloce per farlo fare è:

git checkout master 
git push origin HEAD:new-branch 
git checkout new-branch 
git push origin HEAD:/refs/for/new-branch 
+1

La mia risposta non è sbagliata, la nuova funzionalità di Gerrit è esattamente ciò che l'OP sta chiedendo. Leggi [con attenzione] (http://code.google.com/p/gerrit/issues/detail?id=1156): Ciò che voglio veramente essere in grado di fare con Gerrit è: 'git push origine HEAD: refs/per/some-new-branch' e avere il nuovo ramo creato una volta che il codice passato passa in rassegna. – mvp

+2

Devo essere d'accordo con mvp. In realtà sto chiedendo, perché devo usare l'interfaccia utente per fare lo stesso, cosa può automatizzare Gerrit? Supponendo che sto usando 'Ctrl + C',' Ctrl + V' per usare _esattamente lo stesso nome di ramo_ in Git Bash e nell'interfaccia utente di Gerrit, ho esattamente la stessa possibilità di sbagliare il nome del ramo o di crearne molti, come avrei fatto, se Gerrit automatizzasse quel processo per me. – trejder

+3

Penso che sia chiaro cosa vuole trejder e sono d'accordo con @mvp che la richiesta della funzione originale in [numero 1156] (https://code.google.com/p/gerrit/issues/detail?id=1156) corrisponderebbe a ciò è stato richiesto, ma non ci sono prove che la correzione per il problema sia stata implementata come originariamente richiesto. Come indicato in un altro commento, [Cambia 52500] (https://gerrit-review.googlesource.com/52500) implementa solo il piano di backup descritto nell'ultimo paragrafo del problema. –

0

diciamo nuova filiale è "myNewBranch"

git checkout master 
git push origin HEAD:myNewBranch 

Dopo commettere alcune modifiche per spingere il nuovo commit:

git push origin myNewBranch 

funziona per me. Ma ..

Non so perché non è possibile eseguire lo stesso commit per masterizzare dopo quello e viceversa - se ho aperto PR per la revisione in master, non è possibile inviare lo stesso commit a "myNewBranch". Per farlo doveva abbandonare il PR per padroneggiare e poi selezionare il commit sul nuovo ramo locale e quindi premere sul telecomando "myNewBranch"

Buona fortuna!

Problemi correlati