2013-05-16 4 views
7

Sto usando git come sistema di controllo della versione in RStudio. Ho diverse versioni di uno script R salvate in git. Diciamo, ho cancellato un blocco di codice, ma ora ho deciso di reinserire il codice nel mio attuale script R. So che il codice include la funzione ddply. Questo è il mio flusso di lavoro corrente:Il modo più veloce per reinserire il codice di versione in RStudio

apro il terminale in RStudio, e digitare:

git grep ddply $(git rev-list --all) 

Questo porta centinaia di righe di codice, come ad esempio:

2c975e1faee880545546646648f5be2b55f60fc757c29828f1f:reports/:data <- ddply(x, .(as.factor(y), summarise, mean(count)) 
2c975e1faee880545546646648f5be2b55f60fc757c29828f1f:reports/:data <- ddply(x, .(as.factor(y), summarise, mean(count)) 
2c975e1faee880545546646648f5be2b55f60fc757c29828f1f:reports/:data <- ddply(x, .(as.factor(y), summarise, mean(count)) 
2c975e1faee880545546646648f5be2b55f60fc757c29828f1f:reports/:data <- ddply(x, .(as.factor(y), summarise, mean(count)) 
2c975e1faee880545546646648f5be2b55f60fc757c29828f1f:reports/:data <- ddply(x, .(as.factor(y), summarise, mean(count)) 

ho setacciare il codice e alla fine trovare il bit che stavo cercando. Copio il bit di codice rilevante da Terminal e lo incollo nuovamente nel mio script R. Prima che il codice sia utilizzabile, ho bisogno di cancellare questo bit: 2c975e1faee880545546646648f5be2b55f60fc757c29828f1f:reports/:

Al momento, questo sembra un modo piuttosto lento e goffo di riutilizzare il vecchio codice di versione controllata, e potrebbe essere meglio usare Ristory.

C'è un modo più veloce di ottenere codice versione controllata da git e ritorno in uno script R in RStudio?

risposta

2

L'interfaccia RStudio per Git è estremamente semplice e non fornisce un metodo diretto per lavorare con la cronologia oltre un semplice revert, né con rami oltre la commutazione.

Se tutto si sa è che ddply esisteva nella funzione ora si desidera riutilizzare allora il vostro metodo di ricerca perché è davvero il migliore che si può fare, o forse la bandiera -G grep per git log. Se si conosce qualsiasi altra cosa (ad esempio: un certo senso del periodo di tempo, il nome del file o del percorso o il ramo su cui si è lavorato), è possibile rendere le cose molto più semplici filtrando il registro di commit con alcuni criteri.

Una volta trovato il commit allora si può semplicemente in modo interattivo checkout i pezzi di patch utilizzando

git checkout -p

e utilizzarlo proprio come si farebbe se si è utilizzato commit interattivo. Ciò consente di dividere i pezzi per ottenere solo la parte desiderata. Oppure, se si desidera semplicemente reinserire il codice utilizzando copia e incolla, quindi git show & & copia/incolla.

Non dimenticare che non si è bloccati esclusivamente nell'interfaccia di RStudio. Ci sono una moltitudine di GUI di facile utilizzo per git che consentono di lavorare e cercare nella cronologia per rappresentare graficamente blocchi espliciti e nessuno di essi interferirà con Rstudio. Funzionano tutti solo sul codice e l'interfaccia RStudio si aggiornerà secondo necessità.

Git Interfaces

Sono personalmente parziale al terminale, i comandi gitk gitGUI &, TortoiseGit e Git Extensions.