2011-09-01 5 views
25

Sto usando un'installazione dietro-firewall di Gitorious.È possibile creare richieste di unione in puro Git dalla riga di comando?

Posso accedere all'applicazione Web e creare una richiesta pull da un clone e indirizzare il repository principale da cui è stato clonato.

Mi piacerebbe essere in grado di farlo sulla riga di comando. Più specificamente, mi piacerebbe essere in grado di aprire richieste di unione dalla riga di comando da un ramo all'altro (piuttosto che dal clone al repository di seed).

Poiché non utilizzo Github, non è possibile utilizzare Github specific tools or libraries. È possibile?

risposta

4

Non esiste una "richiesta di unione" in git. Quindi, se ciò fosse possibile, richiederebbe strumenti specifici di Gitorious. Non è possibile in git puro.

52

Il answer given by svick non è corretto. È è possibile.

C'è il git request-pull che fa parte della suite Git. Utilizzando questo strumento da riga di comando, è possibile creare una richiesta di pull che può essere inviata per e-mail.

Esempio:
il tuo origin detiene una filiale master. Ora si crea un ramo bugfix locale fix, implementare la correzione di bug e spingere che fix ramo per origin:

git push origin fix:fix 

Allora, vuoi che qualcuno unire le modifiche apportate nel ramo fix in master. Creare la richiesta di pull con

git request-pull master origin 

Questo creerà un testo formattato come segue:

The following changes since commit <SHA of master>: 

    <commit message of SHA of mster> 

are available in the git repository at: 
    <repo location> fix 

<User Name> (<Number of Commits>): 
     <messages of the commits> 
     ... 

<changed files> 
... 
<file statistics> 

Se la richiesta di fusione andrà a qualcuno che non possono accedere al repository in cui ti ha spinto le modifiche, c'è sempre l'opportunità di farlo con git format-patch.

Dopo aver spinto la filiale fix a origin (che non hanno nemmeno bisogno di farlo), pur essendo sul ramo fix creare la patch con

git format-patch master.. 

Questo creerà un file di patch per ogni voi commit fatto in fix dalla diramazione master. Si potrebbe raggruppare i file generati con .patch

tar czf fix.tgz *.patch 

e poi inviare a qualcuno per esempio via e-mail per rivedere e applicare.

Per motivi di completezza: l'applicazione delle patch può essere eseguita con git am.

+3

È sembrava aver perso la domanda reale e ha risposto solo il titolo ... E 'chiaramente la richiesta di pull deve andare su Gitorious, che ha il suo * proprio * meccanismo di richiesta di pull. –

+6

Ciò non cambia il fatto che non vi è alcun concetto di "richiesta di unione" in git stesso. – svick

+7

@Idan: l'OP richiede un ** modo di riga di comando per aprire le richieste di unione. E questo è esattamente ciò che sto descrivendo. – eckes