Come evitare di lavorare sul ramo sbagliato?


27

Fare attenzione di solito è abbastanza per prevenire problemi, ma a volte ho bisogno di ricontrollare il ramo su cui sto lavorando ( es. "Hmm ... sono nel devramo, giusto?") Controllando il percorso di controllo del codice sorgente di un casuale file.

Nel cercare un modo più semplice, ho pensato di nominare i file della soluzione di conseguenza ( ad es. MySolution_Dev.sln ) Ma con nomi di file diversi in ciascun ramo, non riesco a unire i file della soluzione.

Non è un grosso problema, ma ci sono metodi o "piccoli trucchi" che usi per assicurarti rapidamente di essere nel ramo giusto? Sto usando Visual Studio 2010 con TFS 2008.


2
Sembra un buon candidato per un'estensione VS 2010 da scrivere che consente una sorta di segnale visivo configurabile per indicare il ramo. Forse colorando lo sfondo di Solution Explorer secondo le impostazioni dell'utente (farei verde per Dev, giallo per QA e rosso per Prod).
Jesse C. Slicer,

Bella idea, anche un indicatore sulla barra del titolo VS sarebbe di aiuto.
henginy,

1
Direi che dovrebbe essere abbastanza efficace. Ho il mio prompt di bash impostato per includere il mio ramo git e se i file di origine sono puliti o se hanno bisogno di un check-in
Daenyth

TFS non ha qualcosa di equivalente git statuso hg status?

Uso l'interfaccia utente VS per le operazioni TFS, quindi non ne ho proprio idea.
henginy,

Risposte:


16

Sto usando questo http://visualstudiogallery.msdn.microsoft.com/f3f23845-5b1e-4811-882f-60b7181fa6d6

Aggiorna il tuo titolo, ad esempio:

Sviluppo \ myproject

o

Main \ myproject

o

Rilascia \ myproject

Spero che sia d'aiuto


Sembra che lo faccia, lo proverò ..
henginy

Uso questa estensione esattamente per questo scopo. In effetti, stavo per pubblicare il link, quando ho visto che ynnok aveva già.
Bobson,

1
Ho finito per usare questo come posso vederlo nel titolo su quale ramo sono. Davvero fantastico!!!
Piotr Kula,

Sì, è davvero molto conveniente!
henginy

16

Denominare le directory di lavoro in modo diverso. Cioè, se il tuo progetto è intitolato "MY_PROJECT", crea una directory di lavoro diversa per ciascun ramo. Se esiste un ramo chiamato "dev", allora avresti bisogno di una directory per trunk e di una directory per dev, come questa:

~/henginy/projects/MY_PROJECT-trunk
~/henginy/projects/MY_PROJECT-dev

Le directory effettivamente funzionanti sono denominate diversamente. Ma con un Visual Studio già aperto, (ad esempio dopo che faccio una pausa caffè e torno alla mia scrivania) devo controllare il percorso di un file per vedere la directory. Quindi immagino sia il modo più semplice e non c'è scampo da quello?
henginy,

2
@henginy Questo è un buon chiarimento. Per determinarlo in Visual Studio, ho il puntatore del mouse sopra la scheda di un file aperto. Visualizzerà una descrizione del percorso completo del file system, dal quale posso determinare se la radice è "-dev" o "-trunk". Provalo e vedi se funziona per te.
Matthew Rodatus,

1
Sì, è esattamente così che "controllo il percorso di controllo del codice sorgente di un file casuale" e sto cercando di trovare un modo più veloce :)
henginy,

@henginy Oh, giusto. L'hai detto in OP. Non conosco un modo migliore dalla parte superiore della mia testa. Sembra che non sia affatto migliorato per la tua situazione. :-(
Matthew Rodatus,

Avrei dovuto chiarirlo meglio nella mia domanda. Grazie per l'aiuto!
henginy,

8

Non lavoro in un ramo generico di sviluppo o tronco.

Lavoro SEMPRE nei rami delle caratteristiche. Al termine di una funzione, seguo questi passaggi.

  1. Open Source Control Explorer.
  2. Unisci dallo sviluppatore al ramo di funzionalità corrente.
  3. Risolvi eventuali conflitti e assicurati che tutto funzioni ancora.
  4. Effettua nuovamente il check-in. Unisci funzionalità nel ramo di sviluppo.
  5. Apri la soluzione di sviluppo.
  6. Checkin dev branch.
  7. Chiudi la soluzione di sviluppo.
  8. Consenti a CI di creare e distribuire.

Ho solo il ramo di sviluppo aperto per pochi minuti alla volta e lo chiudo subito.


7

È possibile creare un file vuoto in ciascun ramo, ad es. THIS_IS_TRUNK.txt nel trunk, e THIS_IS_DEV.txt in DEV.


2
Potrebbe effettivamente funzionare ... Soprattutto con un carattere di sottolineatura davanti al nome del file per spostarlo verso l'alto in Esplora soluzioni.
henginy,

6

Faccio molto del mio lavoro (D) VCS dalla riga di comando. Consiglio vivamente di avere il tuo prompt visualizzato dove ti trovi. Ad esempio, il mio prompt in un repository Git è simile (lo faccio anche per SVN):

[BranchName]RepoTop/path/to/current/wd >>

E se il repository è attualmente sporco (modifiche non confermate):

[BranchName!!]RepoTop/path/to/current/wd >>

Ho anche lo sfondo impostato su rosso se loggato in prod, cose del genere. Trovo che le semplici notifiche visive siano super efficaci per me.

Hai detto che lo vedi spesso dopo essere tornato sul tuo computer. Trovo un post-it note, con il mio focus attuale (branch, bug #, feature) incollato alla mia tastiera quando me ne vado, per essere super efficace nel permettermi di tornare al lavoro rapidamente, piuttosto che ricreare qualunque cosa fossi l'ultima volta .


4

C'è un'estensione gratuita di Visual Studio chiamata TFS Solution Info che può esserti utile. Ti mostra il ramo e l'area di lavoro correnti in una piccola finestra che puoi agganciare / bloccare ovunque tu voglia.


Sembra fantastico ma supporta VS2012
Piotr Kula il

3

Ho usato l' estensione VSCommands (con Visual Studio 2012, ma esiste una versione 2010) e inserisce comodamente il nome del ramo nell'angolo in alto a sinistra dello schermo e in Esplora soluzioni.

Non affiliato al prodotto in alcun modo, solo un utente felice.


1
Sembra brutto male purtroppo devi pagare per tutte le cose extra che potrebbero non essere necessarie :(
Piotr Kula

2

Evito di lavorare nel ramo sbagliato facendo quasi tutto in un ramo (nel tronco - per la cosiddetta strategia di ramificazione "tronco instabile" ).

I casi in cui sono costretto ad aggiornare i rami sono piuttosto rari: si tratta di correzioni di pre e post produzione (il codice del candidato è isolato nei rami). Dato che anche queste correzioni dovrebbero trovarsi nel trunk, di solito le bozze, le collaudo e le collaudo proprio lì nel trunk, quindi porto al ramo di prod. Il porting di regola prevede solo una copia semplice da 1 a 5 file per eseguire il branch e il build check.

  • Sono anche un po 'fortunato che nella maggior parte dei miei progetti il ​​management abbia preferito convincere i clienti a utilizzare versioni più recenti invece di correggere quelle vecchie - questo porta la parte post-produzione degli aggiornamenti nelle filiali al minimo quasi trascurabile.

È davvero bello non dover mantenere le versioni precedenti. In quel caso immagino che userei un ramo solo per scopi sperimentali.
henginy,

@henginy Non riesco a ricordare casi in cui ho avuto il lusso di non dover mantenere le versioni precedenti. Tuttavia, l'atteggiamento della direzione può fare una grande differenza qui: a seconda di ciò si può ad esempio implementare 1-2 hotfix / anno nelle filiali più vecchie o pasticciare con questa metà di tutto il tempo
moscerino

1

Una risposta specifica dipende dal software di controllo della versione che stai utilizzando, ma di solito c'è un comando che ti consente di vedere facilmente il ramo su cui stai lavorando. Ad esempio, con Subversion, utilizzare il svn infocomando in una directory per visualizzare l'URL per quel ramo. Se sei più interessato a un determinato file, puoi specificare anche quello:

caleb-dev$ svn info foo.c 
Path: foo.c
Name: foo.c
URL: https://svn.mycompany.com/repo/sample/branches/caleb-dev/foo.c
Repository Root: https://svn.mycompany.com/repo/sample
Repository UUID: d62f7aef-3ad2-6098-12a-c16647d854ab
Revision: 1042
Node Kind: file
Schedule: normal
Last Changed Author: caleb
Last Changed Rev: 1031
Last Changed Date: 2011-06-07 15:28:27 -0400 (Tue, 07 Jun 2011)
Text Last Updated: 2011-06-08 03:08:12 -0400 (Wed, 08 Jun 2011)
Checksum: 123456789098765432123456789098

Dall'URL, posso vedere che la mia copia di foo.c si trova nel ramo caleb-dev.

Non ho bisogno di farlo molto spesso perché la mia directory locale ha lo stesso nome del ramo. Una rapida occhiata al mio prompt della riga di comando è in genere sufficiente per confermare che sono nella directory giusta e quindi sto lavorando nel ramo giusto.


1

Molte risposte qui già, ma nessuna che tocca la semplice soluzione che abbiamo dove lavoro: per ogni ramo, creare una nuova macchina virtuale contenente un ambiente di sviluppo e verificare dal ramo appropriato. Devi solo farlo e farlo bene una volta, quindi devi semplicemente cambiare macchina virtuale per cambiare ramo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.