Wie vermeiden Sie es, an der falschen Filiale zu arbeiten?

27

Vorsicht ist normalerweise genug, um Probleme zu vermeiden, aber manchmal muss ich den Zweig, an dem ich arbeite, noch einmal überprüfen ( z. B. "hmm ... ich bin im devZweig, richtig?"), Indem ich den Quellcodeverwaltungspfad eines Zufalls prüfe Datei.

Auf der Suche nach einem einfacheren Weg habe ich mir überlegt, die Lösungsdateien entsprechend zu benennen ( z. B. MySolution_Dev.sln ), aber mit unterschiedlichen Dateinamen in jedem Zweig kann ich die Lösungsdateien nicht zusammenführen.

Es ist keine so große Sache, aber gibt es Methoden oder "kleine Tricks", mit denen Sie schnell sicherstellen können, dass Sie in der richtigen Branche sind? Ich verwende Visual Studio 2010 mit TFS 2008.

henginy
quelle
2
Dies klingt wie ein guter Kandidat für die Erstellung einer VS 2010-Erweiterung, mit der eine Art konfigurierbarer visueller Hinweis auf den Zweig möglich ist. Vielleicht den Hintergrund des Projektmappen-Explorers gemäß den Benutzereinstellungen einfärben (ich würde grün für Dev, gelb für QA und rot für Prod tun).
Jesse C. Slicer
Gute Idee, auch ein Indikator in der VS-Titelleiste würde helfen.
Henginy
1
Ich würde sagen, das sollte ziemlich effektiv sein. Ich habe meine Bash-Eingabeaufforderung so eingestellt, dass sie meinen Git-Zweig enthält und ob die Quelldateien sauber sind oder ob sie eingecheckt werden müssen
Daenyth
Hat TFS nicht etwas Äquivalentes zu git statusoder hg status?
Ich verwende die VS-Benutzeroberfläche für TFS-Vorgänge, daher habe ich keine wirkliche Idee.
Henginy

Antworten:

16

Ich benutze diese http://visualstudiogallery.msdn.microsoft.com/f3f23845-5b1e-4811-882f-60b7181fa6d6

Aktualisiert Ihren Titel zum Beispiel auf:

Entwicklung \ myproject

oder

Haupt \ myproject

oder

Release \ myproject

Ich hoffe es hilft

ynnok
quelle
Das scheint es zu tun, ich werde es versuchen ..
henginy
Ich benutze diese Erweiterung für genau diesen Zweck. Tatsächlich wollte ich den Link posten, als ich sah, dass ynnok ihn bereits hatte.
Bobson
1
Ich habe dieses letztendlich benutzt, wie ich im Titel sehen kann, auf welchem ​​Zweig ich mich befinde. Wirklich großartig!!!
Piotr Kula
Ja, das ist in der Tat sehr praktisch!
Henginy
16

Benennen Sie die Arbeitsverzeichnisse unterschiedlich. Wenn Ihr Projekt den Titel "MY_PROJECT" trägt, erstellen Sie für jeden Zweig ein anderes Arbeitsverzeichnis. Wenn es einen Zweig mit dem Namen "dev" gibt, benötigen Sie ein Verzeichnis für trunk und ein Verzeichnis für dev, wie folgt:

~/henginy/projects/MY_PROJECT-trunk
~/henginy/projects/MY_PROJECT-dev
Matthew Rodatus
quelle
Tatsächlich werden Arbeitsverzeichnisse anders benannt. Bei einem bereits geöffneten Visual Studio (z. B. nachdem ich eine Kaffeepause gemacht habe und zu meinem Schreibtisch zurückgekehrt bin) muss ich den Pfad einer Datei überprüfen, um das Verzeichnis anzuzeigen. Also denke ich, es ist der einfachste Weg und kein Entkommen davor?
Henginy
2
@henginy Das ist eine gute Klarstellung. Um dies in Visual Studio festzustellen, bewegen Sie den Mauszeiger über die Registerkarte einer geöffneten Datei. Es wird eine QuickInfo des vollständigen Dateisystempfads angezeigt, anhand derer ich feststellen kann, ob der Stamm "-dev" oder "-trunk" ist. Versuchen Sie das und sehen Sie, ob es für Sie funktioniert.
Matthew Rodatus
1
Ja, genau so "überprüfe ich den Quellcodeverwaltungspfad einer zufälligen Datei" und versuche, einen schnelleren Weg zu finden :)
henginy
@henginy Oh, richtig. Das hast du in OP gesagt. Ich kenne keinen besseren Weg von oben. Klingt so, als hätte ich Ihre Situation überhaupt nicht verbessert. :-(
Matthew Rodatus
Ich hätte das in meiner Frage besser klären sollen. Danke für deine Hilfe!
Henginy
8

Ich arbeite nicht in einem allgemeinen Entwickler- oder Trunk-Zweig.

Ich arbeite IMMER in Feature-Zweigen. Wenn eine Funktion fertig ist, folge ich diesen Schritten.

  1. Öffnen Sie den Quellcodeverwaltungs-Explorer.
  2. Vom Entwickler in den aktuellen Feature-Zweig einfügen.
  3. Beheben Sie alle Konflikte und stellen Sie sicher, dass alles noch funktioniert.
  4. Checken Sie erneut ein. Feature in Dev Branch zusammenführen.
  5. Öffnen Sie die Entwicklerlösung.
  6. Dev Branch einchecken.
  7. Dev solution schließen.
  8. Lassen Sie CI erstellen und bereitstellen.

Ich habe den Entwicklerzweig immer nur für ein paar Minuten geöffnet und schließe ihn sofort.

CaffGeek
quelle
7

Sie können in jedem Zweig eine leere Datei erstellen, z. B. THIS_IS_TRUNK.txt in trunk und THIS_IS_DEV.txt in DEV.

Robstel
quelle
2
Das könnte tatsächlich funktionieren. Insbesondere mit einem Unterstrich vor dem Dateinamen, um ihn im Lösungs-Explorer nach oben zu verschieben.
Henginy
6

Ich arbeite viel mit meinem (D) VCS über die Befehlszeile. Ich kann nur empfehlen, dass Sie sich umgehend anzeigen lassen, wo Sie sich gerade befinden. Zum Beispiel sieht meine Eingabeaufforderung in einem Git-Repo so aus (ich mache das auch für SVN):

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

Und wenn das Repo derzeit schmutzig ist (nicht festgeschriebene Änderungen):

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

Ich habe auch den Hintergrund auf rot gesetzt, wenn ich in prod eingeloggt bin. Einfache visuelle Benachrichtigungen sind für mich sehr effektiv.

Sie haben erwähnt, dass Sie dies am häufigsten sehen, wenn Sie zu Ihrem Computer zurückkehren. Ich finde eine Haftnotiz, bei der mein aktueller Fokus (Zweig, Fehlernummer, Funktion) beim Verlassen auf meiner Tastatur haftet, damit ich schnell wieder zur Arbeit komme, anstatt das, was ich zuletzt getan habe, neu zu erstellen .

mitchellhislop
quelle
4

Es gibt eine kostenlose Visual Studio-Erweiterung namens TFS Solution Info , die Ihnen dabei helfen kann. Es zeigt Ihnen den aktuellen Zweig und den Arbeitsbereich in einem kleinen Fenster, das Sie an beliebiger Stelle andocken / anheften können.

Glenn Arndt
quelle
Sieht toll aus, unterstützt aber VS2012
Piotr Kula
3

Ich verwende die VSCommands- Erweiterung (mit Visual Studio 2012, es gibt jedoch eine 2010-Version) und sie fügt den Zweignamen bequem in die linke obere Ecke des Bildschirms sowie in den Lösungs-Explorer ein.

In keiner Weise mit dem Produkt verbunden, nur ein zufriedener Benutzer.

R0MANARMY
quelle
1
Es sieht cool aus, leider musst du für all die zusätzlichen Dinge bezahlen, die möglicherweise nicht benötigt werden :(
Piotr Kula
2

Ich vermeide es, im falschen Zweig zu arbeiten, indem ich fast alles in einem Zweig erledige (in der so genannten "instabilen Trunk" -Verzweigungsstrategie ).

Die Fälle, in denen ich gezwungen bin, Zweige zu aktualisieren, sind ziemlich selten - dies sind Bugfixes vor und nach der Produktion (der Produktkandidatencode ist in Zweigen isoliert). Da sich diese Fixes auch im Trunk befinden sollten, entwerfe, teste und überprüfe ich sie normalerweise direkt im Trunk und portiere sie dann zum Prod Branch. Das Portieren umfasst in der Regel nur eine einfache Kopie von 1 bis 5 Dateien zum Verzweigen und Erstellen.

  • Ich bin auch ein bisschen glücklich, dass das Management in den meisten meiner Projekte es vorgezogen hat, Kunden davon zu überzeugen, neuere Releases zu verwenden, anstatt alte zu patchen - dies reduziert den Teil der Updates in den Filialen nach der Produktion auf ein fast vernachlässigbares Minimum.
Mücke
quelle
Es ist in der Tat schön, frühere Releases nicht warten zu müssen. In diesem Fall würde ich einen Zweig vermutlich nur zu Versuchszwecken verwenden.
Henginy
@henginy Ich kann mich nicht an Fälle erinnern, in denen ich den Luxus hatte, frühere Releases überhaupt nicht warten zu müssen. Die Haltung des Managements kann hier jedoch einen großen Unterschied ausmachen: Je nachdem kann man z. B. 1-2 Hotfixes pro Jahr in älteren Filialen implementieren oder sich mit dieser Hälfte der Zeit
herumschlagen
1

Eine bestimmte Antwort hängt von der Versionskontrollsoftware ab, die Sie verwenden. In der Regel gibt es jedoch einen Befehl, mit dem Sie den Zweig, an dem Sie arbeiten, leicht erkennen können. Verwenden Sie beispielsweise bei Subversion den svn infoBefehl in einem Verzeichnis, um die URL für diesen Zweig anzuzeigen. Wenn Sie mehr an einer bestimmten Datei interessiert sind, können Sie dies auch angeben:

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

An der URL kann ich erkennen, dass sich meine Kopie von foo.c im caleb-dev-Zweig befindet.

Ich muss das nicht sehr oft tun, da mein lokales Verzeichnis den gleichen Namen wie der Zweig hat. Ein kurzer Blick auf meine Eingabeaufforderung genügt normalerweise, um zu bestätigen, dass ich mich im richtigen Verzeichnis befinde und daher im richtigen Zweig arbeite.

Caleb
quelle
1

Hier gibt es bereits viele Antworten, aber keine, die auf die einfache Lösung eingeht, mit der ich arbeite: Erstellen Sie für jeden Zweig eine neue VM mit einer Entwicklungsumgebung und checken Sie aus dem richtigen Zweig aus. Sie müssen das nur einmal tun und es richtig machen, und dann wechseln Sie einfach die VMs, um die Zweige zu wechseln.

Mason Wheeler
quelle