Domanda

Ho impostato alcune cose della shell che definiscono in modo dinamico gli alias in base al tipo di repository VC contenuto nel CWD, quindi, ad esempio, "d" esegue "svn diff" o "git diff", a seconda. (Basato su questo post sul blog , se qualcuno è interessato ...)

Vorrei definire alcuni alias in modo diverso a seconda che io sia in un repository git rispetto a un repository git-svn. C'è un modo semplice per dire la differenza tra i due?

È stato utile?

Soluzione

Dovresti stare un po 'attento quando decidi quali repository sono esattamente repository git-svn. Un repository può contenere più di un repository svn.

La soluzione di Kafka funzionerà solo se il repository svn è stato clonato con l'opzione -s o --std-layout, in cui in realtà è un ramo trunk .

La risposta di Codelogic funzionerà solo se esiste un repository svn chiamato svn - non è necessario che sia vero.

Il modo più semplice per verificare se è un svn-remote nella configurazione è:

$ git config --get-regexp ^svn-remote

Questo troverà qualsiasi repository git-svn configurato, qualunque sia il loro nome. Uscirà con lo stato 0 se c'è una corrispondenza e 1 se non c'è una corrispondenza.

Ma questo non significa che il repository svn sia veramente usato. Potrebbe anche essere che qualcuno abbia importato un repository svn, ma che usi sia come sottomodulo o come unione di sotto-alberi, o addirittura per niente. Se i metadati nel repository git-svn sono stati attivati, puoi vedere se è stata usata una revisione svn nell'attuale HEAD usando qualcosa del genere:

$ git rev-list -1 --grep='git-svn-id' HEAD

Ma forse è un po 'troppo contorto. Decidi tu.

Altri suggerimenti

Probabilmente puoi usare l'output del comando git config per distinguere tra un repository git e git-svn.

git config --get svn-remote.svn.url

dovrebbe restituire l'URL svn in fase di sincronizzazione, se ce n'è uno.

C'è anche un ramo chiamato trunk e un ramo chiamato trunk @ [REV]. Tuttavia, penso che l'approccio di codelogics sia più semplice e più pulito.

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