Wie kann ich die Codequalität ohne SCM aufrechterhalten?

110

Ich arbeite in einer staatlichen Einrichtung. Die hier verwendete Technologie und die Methoden zur Entwicklung von Software sind ziemlich altmodisch.

Sie haben eine Menge Speicherplatz, aber keinen angemessenen Platz, um die Anwendungen zu verwalten und zu warten, mit denen der Großteil der Arbeit hier automatisiert wird.

Die Institution würde mir nicht erlauben, SCM-Software wie GIT oder SVN zu verwenden.

Was wäre der beste Ansatz, um die Codequalität beizubehalten und später neue Funktionen in die Apps aufzunehmen?

Wie kann ich mich an Änderungen erinnern, die ich am Code vorgenommen habe, ohne ihn zu beschädigen?

EDIT: Ich habe vergessen zu erwähnen, sie haben Netzwerklaufwerke für jeden der Computer und irgendwie machen oder speichern diese Netzwerklaufwerke Backups in bestimmten Zeiträumen. Wenn ich jedoch keinen eigenen Plan erstelle, mit dem ich meine Arbeit speichern und neue Funktionen hinzufügen kann, ohne den vorhandenen Code zu beschädigen, gibt es keinen großen Vorteil gegenüber einer SCM-Lösung.

BEARBEITEN: Da viele Leute tragbares Git vorgeschlagen haben, muss ich mehr Info hinzufügen. Ich habe versucht, den Visual SVN-Server zu installieren, aber es ist fehlgeschlagen, da ich keine Administratorrechte zum Installieren habe. Ich habe auch versucht, eine normale Git-Shell herunterzuladen, aber die Firewall oder die Netzwerkeinstellungen haben mir nicht erlaubt, auf die Git-Downloadseite zuzugreifen. Ich habe sogar versucht, tragbare Git an meine E-Mail zu senden, die Google Mail ist. Google hat die exe-Datei im Paket erkannt und mir auch nicht ermöglicht, die portable Git-Version auf meinen Arbeitscomputer herunterzuladen. Eine andere Sache, die ich erwähnen muss, ist, dass die Netzwerkrichtlinien, die auf die Computer innerhalb der Institution angewendet werden, die Verwendung von USB-Speichergeräten nicht zulassen. Über die USB-Anschlüsse können Sie Smartphones aufladen oder Geräte wie kleine Lautsprecher mit Strom versorgen. Wie auch einige Leute erwähnt haben, gibt es Computer, auf denen nicht einmal Internet erlaubt ist.

Vlad
quelle
4
Sie können den Dateitypfilter von Google Mail umgehen, indem Sie ihn in eine "bekannte" Erweiterung wie .mp3 oder .zip umbenennen.
Pac0
2
Ich frage mich, warum zum Teufel diese Frage im Jahr 2017 noch so viele positive Stimmen hat - ich habe wirklich Angst
Ole K
9
Einen anderen Job finden. Diese Leute sind unvernünftige Dinosaurier. Sie werden so viel mehr Arbeitszufriedenheit finden, dass Sie die richtigen modernen Werkzeuge verwenden müssen.
Rob K
5
Es gibt keinen Grund, warum eine Regierungsinstitution SCM nicht verwenden sollte. Tatsächlich brechen sie wahrscheinlich eine Vielzahl von Prozess- und Prüfungsregeln, indem sie keinen SCM verwenden. Ich würde vorschlagen, dass Sie es aus diesem Blickwinkel angreifen
jk.
2
@jk bringt einen wirklich guten Punkt auf. Wenn ein Defekt einen finanziellen Verlust verursacht, Betrug ermöglicht oder zu Verletzungen oder zum Verlust von Leben führt, werden die Auditoren wie Löwen auf einem Lamm auf Sie herabsteigen - und jemand wird seinen Job verlieren. Sie höchstwahrscheinlich. Das obere Management wird ihre Rente nicht für Sie riskieren.
Greg Burghardt

Antworten:

175

Sie können die Rolle, die die Quellcodeverwaltung spielt, mit drei einfachen Tools lose replizieren:

  • Backup-Software (Commits / Check-Ins)
  • Ordner (Zweige)
  • Durchführen einer Verzeichniszusammenführung zwischen zwei Verzeichnissen mit einem Tool wie KDiff3 (Zusammenführen von Zweigen)

Grundsätzlich wird Ihr Workflow:

  1. Erstelle einen neuen Ordner (neuer Zweig)
  2. Kopieren von Dateien in den neuen Ordner (neuer Zweig) aus einem vorhandenen Ordner (vorhandener Zweig)
  3. Erstellen Sie eine Sicherungskopie dieses Ordners (schließen Sie die Erstellung des neuen Zweigs ab).
  4. Arbeite etwas
  5. Erstellen Sie eine Sicherungskopie des neuen Ordners (Festschreiben)
  6. Führen Sie eine Verzeichniszusammenführung von einem Ordner zu einem anderen durch (Zusammenführung)
  7. Führen Sie eine weitere Sicherung im anderen Ordner durch (übernehmen Sie die Zusammenführung).

Die monolithischeren Quellcodeverwaltungssysteme wie SVN oder TFS erledigen dies im Grunde genommen für Sie hinter den Kulissen.


Die Realität sieht so aus, als würde eine Busgesellschaft ihren Fahrern sagen, dass sie keine Busse mit einer Batterie fahren dürfen, und die Fahrer zwingen, den Bus bergab zu schieben und dann die Kupplung zu betätigen, um den Bus zu starten ... das ist schrecklich und weist darauf hin, dass das derzeitige Management nichts über den Betrieb einer Busgarage weiß. Mein Beileid.

Aber zumindest können Sie den Bus starten.

Greg Burghardt
quelle
41
Dies ist in Anbetracht der Einschränkungen die richtige Antwort. Es ist auch so, wie wir es gemacht haben, bevor VCSes eine Sache wurde.
Blrfl
35
+1, obwohl das einfache Gegenargument dafür in den Zeilen stünde ... wir haben früher auch mit Lochkarten programmiert, heißt nicht, dass wir es noch einmal tun sollten
Newtopian
25
+1 - für die Beantwortung der Frage. In meinem ersten Job gab es keine Quellcodeverwaltung, und so haben wir es gemacht. Hinweis: Wir waren nur zu zweit, haben uns gut verstanden und meistens an separaten Projekten gearbeitet, und im Nachhinein war es immer noch eine schlechte Idee. Jede zusätzliche Komplexität des Teams und es wäre ein Albtraum.
Bob Tway
18
Ich bezweifle, dass das OP ein Tool wie KDiff3 installieren / herunterladen kann. Wenn er git nicht lokal installieren kann, bezweifle ich, dass er irgendetwas anderes installieren kann, das lokal läuft.
Ivan
5
@Ivan: Nachdem ich die Kommentare durchgesehen hatte Es schien, als befände sich das OP auf einem Linux-Rechner. Ich habe festgestellt, dass Unternehmen, die diesen Tech-Stack verwenden, normalerweise eine Reihe von Tools zum Vergleichen / Zusammenführen als Teil des normalen Desktop-Builds zur Verfügung haben, und kdiff3 ist ziemlich verbreitet. Gibt es vielleicht noch andere, bei denen das Verzeichnis auch zusammengeführt wird? Oder das OP bleibt beim Zusammenführen von Dateien nacheinander hängen (ick!). Aber ja, diese Situation ist einfach nur beschissen.
Greg Burghardt
139

Obwohl der Konsens sicherlich darin bestehen würde, nicht für dieses Unternehmen zu arbeiten, glaube ich nicht, dass dies Ihre Frage wirklich beantwortet.

Sie können SCM nicht wirklich ersetzen .

Möglicherweise benötigen Sie nicht die üblichen Schnickschnack eines vollwertigen Systems. Beispielsweise kann das Unternehmen eine Anfrage nach einem Server ablehnen, die Verwendung eines lokalen SCM jedoch zulassen. Sie mögen Git vielleicht nicht, erlauben aber Subversion (oder ein anderes Versionssystem).

Es gibt natürlich eine Frage: Was verwenden Ihre Kollegen oder irgendwelche früheren Arbeiter? Wenn Sie der erste Softwareentwickler sind, der diese Produkte entwickelt, ist es an der Zeit, sich intensiv um die benötigten Ressourcen zu bemühen.

Wenn Ihr Unternehmen Ihre Rolle und Erfahrung nicht respektiert und Ihnen nicht die Tools zur Verfügung stellt, die Sie benötigen, werden Sie schlimmer (und stressiger) auf Probleme stoßen als auf einen Mangel an Quellcodeverwaltung.

Erdrik Ironrose
quelle
11
Die Apps, an denen ich arbeite, sind Einzelprojekte. Und nein, ich bin nicht der erste Programmierer hier. Viele sind hierher gekommen und weggegangen.
Vlad
7
Und ich sehe auch Frustration bei einigen Kollegen, wenn sie versuchen, diese alten, hässlich strukturierten Apps zu verwenden, mit einem Gesicht: "Warum machen wir dieses Zeug jedes Jahr?".
Vlad
6
@Vlad: Dir ist bewusst, dass weder Git noch SVN mehr als ein Netzlaufwerk benötigen? Für VB6- und Single-Person-Projekte würde ich wahrscheinlich mit SVN arbeiten, einfacher, mit Binärdateien umzugehen. Ich habe das über mehrere Jahre gemacht, bis wir das letzte VB6-Programm abgelöst haben.
Doc Brown
24
@Vlad "Viele sind hierher gekommen und weggegangen." Finden Sie einen respektvollen Weg, ihnen mitzuteilen, dass diese Unternehmenskultur wahrscheinlich etwas mit ihrem Umsatz zu tun hat.
jpmc26
26
Erinnerung an sich selbst: Fragen Sie, welchen SCM das Unternehmen im Interview verwendet. Wenn die es nicht wissen oder nichts sagen, dann sag es ihnen, danke für deine Zeit und verschwende meine Zeit.
Joojaa
25

Grundsätzlich gibt es ein Verwaltungsproblem (Ihre Organisation versteht die Grundlagen des Softwareentwicklungsprozesses nicht , z. B. das V-Modell ), das sich in der offensichtlichen Unfähigkeit niederschlägt, minimale Workflows, Methoden und Tools der Gegenwart zu verwenden. Dies ist üblich (lesen Sie über Peters Prinzip ).

Übrigens, ich vermute, dass der jüngste SNCF-Zwischenfall in Paris Ende 2017 eine ähnliche Ursache hat (totaler Mangel an Softwarekultur auf hoher Managementebene, daher Sperrung eines großen Pariser Bahnhofs für mehr als einen Tag; natürlich gibt es sehr kompetente IT-Teams der SNCF, die jedoch bei wichtigen Entscheidungen nicht konsultiert werden). Ich kann mehrere europäische Branchen nennen, in denen es an Softwarekultur mangelt, und ich bin mir sicher, dass ich ähnliche Dinge auch in den USA finden kann.

Das Hauptproblem ist: Arbeiten Sie alleine an Ihrer Codebasis oder arbeiten Sie mit Kollegen zusammen?

Wenn Sie alleine arbeiten, können Sie git lokal auf Ihrem Computer verwenden und Ihren Code (und wahrscheinlich sogar Ihr .gitRepository) regelmäßig (auf diesem externen Speicherplatz) sichern . Verlieren Sie niemals mehr als einen halben Arbeitstag (sichern Sie Ihre Daten also regelmäßig und zuverlässig).

(Ich nehme an, dass Sie wissen zumindest beide gitund svnund dass Sie wissen , die technische Überlegenheit git, wenn Sie nicht einmal erlaubt , ein Programm wie die Installation gitauf Ihrem Computer arbeiten Sie ein ernstes Gespräch mit Ihrem Chef über dieses Thema haben müssen: Sie müssen die Fähigkeit und Autorisierung, externe Open-Source-Tools zu installieren (und dies liegt in Ihrer Verantwortung , diese mit Bedacht und Sorgfalt und ohne bekannte Schwachstellen auszuwählen, zu konfigurieren und zu installieren )

Wenn Sie mit mehreren Kollegen zusammenarbeiten (ich nehme an, weniger als ein Dutzend), müssen Sie alle davon überzeugen , ein Versionskontrollsystem zu verwenden, und Sie müssen dies wahrscheinlich Ihrem direkten (und gemeinsamen) Chef mitteilen. Er könnte (wahrscheinlich) entscheiden (oder einfach implizit akzeptieren), dass ein Computer (vielleicht sogar ein alter Desktop, vielleicht sogar Ihr eigener Desktop) als Git-Server verwendet wird. Sie müssen diesen Server unbedingt so einrichten, dass das Git-Repository mindestens stündlich gesichert wird. Sie können es sich nicht leisten (und Sie müssen mit Ihrem Chef darüber sprechen), mehr als eine Arbeitsstunde Ihres Teams zu verlieren.

Übrigens, ich liebe Linux, und ich würde empfehlen, Linux auf dem Computer zu installieren, der als gitServer fungiert. Das Installieren gitund Konfigurieren von regelmäßigen Sicherungen (mit einigen crontabAufgaben) ist sehr einfach. Beachten Sie, dass ein gitServer Linux mit Windows-Clients ausführen kann, die es verwenden. Ich würde sogar vorschlagen, dass Sie Ihre Entwicklungsmaschine auf Linux umstellen, wenn Sie können. Es ist "billiger" und viel entwicklerfreundlicher

Sie müssen jedoch ein SCM verwenden. Sie könnten Ihrem Chef eine andere Frage stellen: Soll Ihr Team ein vorhandenes SCM verwenden oder das Rad neu erfinden und Ihr eigenes SCM erstellen? Chefs sind generell gegen die Idee, das Rad neu zu erfinden. Wenn Sie das Rad neu erfinden dürfen, sagen Sie Ihrem Chef, dass es mindestens ein Jahr lang eine Vollzeitbeschäftigung ist (das wird wahrscheinlich Ihren Chef zum Weinen bringen, dann akzeptieren Sie den offensichtlichen Weg) und haben Sie Spaß daran, Ihr eigenes SCM zu machen. In diesem unwahrscheinlichen Fall sollten Sie sich unbedingt mit den vorhandenen SCM-Systemen befassen und Ihr SCM-System zu einem kostenlosen Software-Tool machen (das von anderen Teams verwendet und verbessert werden kann).

Möglicherweise müssen Sie (über mehrere Tage hinweg) eine präzise und spezifische Argumentation für die Notwendigkeit eines SCM erstellen : zuerst für Ihre Kollegen, dann für Ihren direkten Vorgesetzten. Stellen Sie sicher, dass Sie auch konkrete Lösungen vorschlagen (z. B. einen Git-Server auf einem Desktop oder einem "alten" Server ausführen und ihn stündlich durch einen Auftrag sichern ).crontab

Installieren Sie keine Software (von außerhalb, auch nicht als Open Source) ohne Erlaubnis auf Ihrem Arbeitscomputer (in den meisten Ländern ist die Installation einer Software ohne Erlaubnis rechtlich strafbar, und Sie könnten Ihre Software verlieren) Stelle einen Job oder gehe ins Gefängnis, wenn du das tust. Stelle also sicher, dass du dazu befugt bist. Bedecke deinen Arsch vielleicht, indem du eine schriftliche Erlaubnis fragst oder zumindest per E-Mail.

(Entweder müssen Sie von Fall zu Fall nachfragen, oder Sie müssen das Vertrauen Ihrer Organisation gewinnen, um legale Software - zumeist Open Source- oder freie Software - auf Ihrem Arbeitscomputer installieren zu können .)

PS. Das technische Erstellen, Konfigurieren, Installieren und Verwendengit (aus dem Quellcode der freien Software) - oder der meisten anderen freien Software-VCS - auf einem Computer (auch ohne Administratorberechtigung) ist eine ganz andere Frage (die an anderer Stelle gestellt werden muss). Und es ist möglich, gitohne Administratorrechte zu installieren und dann zu verwenden , vorausgesetzt, Sie haben genügend Ressourcen (Zeit, Speicherplatz, einige C-Compiler usw.) dafür.

Ich habe versucht, den Visual SVN-Server zu installieren, aber es ist fehlgeschlagen, da ich keine Administratorrechte zum Installieren habe.

Dies kann durch eine bestimmte Konfiguration und Kompilierung Ihres gitoder svndes freien Software- Quellcodes von gitoder SubVersion (nicht nur eines Binärpakets) (und auch des Quellcodes von Abhängigkeiten ) gelöst werden . Wie dies technisch zu bewerkstelligen ist, ist eine andere Frage (aber solche technischen Fragen sollten an einer anderen Stelle gestellt werden). Natürlich sollten Sie (von Ihrem Chef) die Erlaubnis einholen, den Quellcode zu kompilieren, gitbevor Sie dies tun. Er wird Ihnen die praktischen Details (falls er eine solche Lösung akzeptiert) bezüglich der Übertragung dieses Quellcodes von außen auf Ihren Arbeitscomputer mitteilen oder Sie werden mit ihm darüber diskutieren.

Basile Starynkevitch
quelle
5
Können Sie auf Github zugreifen und Git aus dem Quellcode erstellen?
Willem
5
@RobertHarvey Sicherheit muss immer eine niedrigere Priorität haben als Ihre Arbeit (die der Organisation, nicht speziell Ihre Arbeit). Weil Sie am sichersten sind, wenn Sie nichts tun. Und dann löst die Regierung Ihre Organisation auf, weil sie niemals etwas unternimmt (oder sogar weniger als die meisten Regierungsorganisationen). Oder Sie verlieren alle Ihre Jobs, weil die Organisation bankrott geht (wenn nicht staatlich finanziert). Oder so weiter.
immibis
6
@immibis: Sorry, aber das ist ein Strohmann. Es gibt keine vollständige Sicherheit, und eine angemessene Sicherheit erfordert nicht, dass Sie die Produktivität opfern, wenn Sie dies ordnungsgemäß tun. Beachten Sie, dass der einfachste und effektivste Weg, um effektive Sicherheit zu gewährleisten (unter Berücksichtigung der Vorsichtsmaßnahmen für die Handhabung von
Robert Harvey
8
@RobertHarvey Das hält einen Mitarbeiter nicht davon ab, Ihre IP zu stehlen. Der einfachste Weg, Mitarbeiter davon abzuhalten, Ihre IP zu stehlen, besteht darin, keine IP zum Stehlen zu haben. Sie sagten, Sicherheit sei die erste Priorität, nicht die zweite oder dritte. In diesem Fall müsse die Produktivität die zweite oder dritte Priorität sein und sollte daher zugunsten der Sicherheit verringert werden.
immibis
3
@immibis, Sie klingen wie jemand ohne Erfahrung in diesen Umgebungen. Sie sprechen auch über Kunden, die Sie legal einsperren und den Schlüssel wegwerfen können, wenn Sie ihre IP stehlen. In dieser Umgebung kann ein falscher Umgang mit Informationen (nicht einmal der Diebstahl von geistigem Eigentum) der Organisation ernsthaften Schaden zufügen. Natürlich ist Sicherheit das Hauptanliegen. Es macht die Arbeit in dieser Umgebung zu einem Schmerz.
Berin Loritsch
11

Als Erstes würde ich genau feststellen, wogegen die Regierungsbehörde (vermutlich die IT-Abteilung) Einwände erhebt. Wenn sie über Speicherplatz verfügen, aber keine Möglichkeit zum Hosten von VMs für Server, besteht das Problem möglicherweise darin, dass die IT-Abteilung den SVN- oder GIT- Server ablehnt, und dies ist ein großer Unterschied. Wenn das Problem das Ursprungsland ist - dh wir vertrauen nicht auf Tools, die von ausländischen Unternehmen erstellt wurden -, ist das ein anderes Problem.

Sie können GIT vollständig innerhalb des Dateisystems ausführen, was ich für Kleinkinderprojekte getan habe, bevor ich bereit bin, etwas mit ihnen zu tun. Für die Installation von GIT sind keine Administratorrechte erforderlich.

Wenn Sie Git aus irgendeinem Grund überhaupt nicht verwenden können, stehen Ihnen einige Optionen zur Verfügung:

  • Aufklärung: Indem sie die Versionskontrolle nicht zulassen, bringen sie ein erhebliches Risiko mit sich. Sie müssen Änderungen rückgängig machen können, die sich als problematischer herausstellen. Sie müssen in der Lage sein, der Regierung Geld und Zeit zu sparen, und das macht SCM. Sie müssen klar erklären können, wie. Sie müssen wahrscheinlich auch eine Analyse der Alternativen durchführen, um den Punkt wirklich herauszufinden.
    • Eine Alternative wäre Git gehostet
    • Ein anderes Dateisystem Git
    • Wählen Sie mindestens ein, aber nicht mehr als zwei alternative SCM-Tools aus
    • und schließlich, wie es ist, ohne Versionskontrolle zu arbeiten
  • Go 70er Ära Entwicklung: Es gibt einen Grund, warum patchund diffvor so langer Zeit (80er Jahre) gemacht wurden. Sie ermöglichten die Versionskontrolle.

Wie sieht die Entwicklung der 70er Jahre aus? Es ist nicht schön, aber so haben wir angefangen. Die Bewerbungen waren viel kleiner. Im Wesentlichen hatten sie einige gemeinsame Dinge:

  • Es gab das Konzept des Goldstandards . Dies war der Master-Quellcode, dessen Funktionen vollständig waren.
  • Es gab ein Configuration Management (CM) -Team. Ihre Aufgabe war es, Änderungen von der Entwicklung in den Goldstandard korrekt umzusetzen. Dies ist, wo Sie brauchen patchund difffür das Team zu ersetzen.
  • Sie haben von einer lokalen Kopie des Quellcodes aus gearbeitet. Sie beenden ein Feature vollständig und senden es zur Integration an das CM-Team. Normalerweise gibt es ein Begleitdokument, in dem neue Dateien erstellt und veraltete Dateien gelöscht werden.
  • Anschließend beheben Sie alle Fehler aus dem Integrationsprozess.
  • Bevor Sie eine weitere Funktion oder eine Fehlerbehebung durchführen können, erhalten Sie eine neue Kopie des Goldstandards.

Im Grunde ist es ein fehleranfälliger Prozess mit viel Potenzial, dass etwas schief geht. Die Idee der "Verzweigung" ist einfach umzusetzen, aber ein Albtraum zu verwalten. Das Hauptproblem ist, dass bei zu vielen Kopien des Quellcodes schwer zu verstehen ist, welche Basis für die Produktion die richtige ist. Aus praktischen Gründen müssen Sie einfädig werden.

Dies ist, was Sie in Ihre Analyse von Alternativen einbeziehen müssen.

Berin Loritsch
quelle
Nein, die Leute hier betrachten die IT-Abteilung nicht als einen entscheidenden Teil der Arbeit. Sie betrachten es als sekundär, eine Abteilung, die nur eine Dienstleistung für die anderen Abteilungen ist. So kann es leiden :)
Vlad
4
@Vlad, haben Sie untersucht, ob die Serverressourcen eingeschränkt sind oder die Anwendung selbst? Wenn es sich um Serverressourcen handelt, können Sie git im Dateimodus verwenden, und es ist viel besser, als es auf die harte Tour zu tun (dh in der 70er-Jahre-Ära).
Berin Loritsch
5
Ich habe einen langen Weg zurückgelegt, um meine Kunden über die mit ihren Entscheidungen verbundenen Kosten aufzuklären. Eine Analyse von Alternativen ist eine hervorragende Möglichkeit, die Auswirkungen dieser Entscheidungen zu kommunizieren. Sicher, es ist viel Arbeit, aber ein paar Tage Dokumentation und Bearbeitung können Ihnen später Wochen voller Herz- und Kopfschmerzen ersparen.
Berin Loritsch
9

In Anbetracht der Einschränkungen, die Sie in den Kommentaren erwähnt haben (z. B .: Ich kann nicht auf die Git-Downloadseite, die Windows-Plattform und Visual Studio 2005 zugreifen), werden zwei Optionen angezeigt, die ich zuvor in einer ähnlichen Situation verwendet habe:

  1. Verwenden Sie Visual SourceSafe, wie Emerson in einem Kommentar vorschlägt. Ich habe vor einigen Jahren mit einem Team zusammengearbeitet, das VS 2005 einsetzte, während der größte Teil des Unternehmens die Standard-Versionskontrolle unter Linux / Unix verwendete, und sie verwendeten Visual SourceSafe gerne für ihr CM. Es ist zu diesem Zeitpunkt ziemlich altmodisch, aber besser als gar nichts.
  2. Apropos besser als nichts, ich war in einer ähnlichen Situation. Wenn Sie nicht einmal VSS verwenden können (möglicherweise ist das Plugin nicht installiert?) Und Sie sagen, dass genügend Speicherplatz verfügbar ist, dürfen Sie hoffentlich einen Teil davon verwenden. Ich habe ein manuelles dateibasiertes Versionskontrollprotokoll implementiert. Am Ende jedes Arbeitstages kopierte ich meine Codebasis in ein neues Verzeichnis mit Datumsstempel. Wenn ich auf frühere Arbeiten (oder Rollbacks) zurückgreifen müsste, würde ich in früheren datierten Verzeichnissen nachsehen, um die von mir benötigte Änderung zu finden. Da Visual Studio innerhalb weniger Stunden verfügbar ist, können Sie mit VS 2005 möglicherweise ein einfaches Tool schreiben, mit dem Sie die Verzeichniserstellung und das Kopieren von Dateien automatisieren können.
Oger Psalm33
quelle
1
Ich habe für Ihre erste Option +1 gegeben. Deine zweite Option bringt mich dazu, mich übergeben zu wollen. Aber ich verstehe.
jpmc26
@ jpmc26 Manchmal arbeitest du in den 1990ern nur in einem restriktiven Umfeld (oder hast das Gefühl, in den 1990ern hängen zu bleiben) und hast buchstäblich keine andere Wahl. Nicht angenehm, aber besser als nichts.
Ogre Psalm33
8

Sie haben jede Menge Stauraum

Dürfen Sie es bei Ihrer Entscheidung verwenden?

In diesem Fall könnten Sie ein Remote-Repository für das Dateisystem erstellen, das besser als nichts ist. Der Nachteil ist, dass das Pushen langsam wird, während das Projekt wächst, da gitdas gesamte Repository heruntergeladen werden muss, um nach den Änderungen zu suchen ...

Bisher verhalten sich die Computer wie normale Benutzer und verbieten mir, Software von Drittanbietern zu installieren.

gitwird auch als portable App geliefert, sodass Sie sie in Ihrem $ HOME- oder% USERPROFILE% -Pfad installieren können.


Als Fazit: Ich würde nicht zulassen, dass sie mir die Verwendung eines SCM 1 verbieten . Ich würde es "privat" benutzen. Schließlich kann niemand sagen, ob Ihr Code mit oder ohne Einchecken irgendwo entwickelt wurde ...

1 ) Als ich vor giteinigen Jahren anfing, ein anderes SCM zu verwenden, bevorzugte mein Kunde ein anderes SCM, das recht langsam und unzuverlässig war (was immerhin eine Art NOGO für ein SCM ist (o;). Ich habe es git"privat" über dem anderen SCM verwendet mit einer "dateibasierten" Fernbedienung auf einer Netzwerkfreigabe und erst nach Veröffentlichung einer neuen Version des Produkts in deren SCM eingecheckt.

Timothy Truckle
quelle
3
Ich kann die Site nicht öffnen, von der Git heruntergeladen werden kann. Und wenn Sie Visual SVN Server installieren, schlägt dies im letzten Schritt mit den Berechtigungen auf diesem PC fehl.
Vlad
3
@Vlad Wird es durch die Firewall Ihres Unternehmens eingeschränkt? Dürfen Sie einen USB-Stick anschließen? Ist dieser Link zugänglich? github.com/sheabunge/GitPortable/releases/download/…
Timothy Truckle
3
Ich darf keine USB-Speichergeräte anschließen, es sei denn, ich lade mein Smartphone auf.
Vlad
18
Das Umgehen des Schutzes gegen das Versetzen von Dingen auf den Firmencomputer, egal wie vernünftig diese Dinge auch sein mögen, wird Sie entlassen und könnte Sie möglicherweise sogar in rechtliche Schwierigkeiten bringen. Tu es nicht!
Sebastian Redl
2
@Vlad Ich meine, um auf den Installer für git zuzugreifen. Stellen Sie jedoch sicher, dass Sie zuerst Software auf Ihrem Computer ausführen dürfen, wie Sebastian Redl sagt.
Baldrickk
7

Ihre Umgebung

Zunächst einmal wäre ich nicht so pessimistisch, wie es in vielen Kommentaren und Antworten gezeigt wird. Ja, das ist "Steinzeit", aber es gibt viel schlimmere Umstände. Wenn Ihr gesamtes Arbeitsumfeld (Kollegen, Standort, Bezahlung, interessante Programmierarbeiten usw.) in Ordnung und Ihrem Geschmack entspricht, bleiben Sie auf jeden Fall dabei. In Bezug auf IT ist es das, was es ist. Dies geschieht nicht nur in Regierungsbehörden, sondern auch in Banken, Versicherungen oder überall dort, wo der Schwerpunkt auf Sicherheit oder sehr alten Strukturen liegt.

Wenn Sie einen USB-Stick einstecken und von dort aus eine .exe-Datei ausführen, kann dies zu einem sofortigen Abbruch an anderen Stellen führen. Ich würde daher nicht empfehlen, dass Sie versuchen, etwas zu umgehen.

Probieren Sie git noch einmal

Nun zu Ihrer Wahl. Ich würde Git anstelle von SVN wärmstens empfehlen. Wenn Sie sowieso Ein-Personen-Projekte durchführen, ist git nur ein lokales Verzeichnis .gitin Ihrem Anwendungsstamm, sonst nichts.

Bitten Sie Ihren Chef / Ihre IT-Abteilung nicht um ein "SCM", sondern speziell um die Installation gitauf Ihrem Computer, damit Sie schneller und mit höherer Qualität entwickeln können. Machen Sie es ihnen klar , dass Sie nicht Ihren Code woanders schieben wollen, dass Sie nicht irgendwo einen Server benötigen ausgeführt wird , und dass es nicht signifikanten Raum oder Wartungszeit aufbrauchen.

Git erhöht die Geschwindigkeit und Qualität für Sie, weil Sie sicherer arbeiten können (weil Sie alle vorgenommenen Änderungen rückgängig machen können) und gleichzeitig an mehreren Zweigen arbeiten können. Wenn Sie also an einer großen Aufgabe arbeiten und eine Aufgabe eingeht, die Ihre sofortige Aufmerksamkeit erfordert, können Sie einfach zu einer neuen Zweigstelle wechseln, diese schnell beheben und dann zu der langfristigen Aufgabe zurückkehren.

Mach es manuell

Wenn das überhaupt nicht möglich ist, können Sie natürlich die manuelle Quellcodeverwaltung durchführen. Erstellen Sie manuelle "Tags", indem Sie Ihren Code selbst kopieren (erstellen Sie möglicherweise ein neues Verzeichnis mit Datum / Uhrzeit und einer kurzen Beschreibung der Änderungen). Führen Sie ein Änderungsprotokoll mit detaillierten Auflistungen nicht nur Ihrer Änderungen, sondern auch der Dateien, die Sie geändert haben, und vielleicht noch mehr Details.

Erstellen Sie "Verzweigungen", indem Sie Ihre Arbeit erneut kopieren. Wenn es Zeit ist, wieder zusammenzufassen und mit beliebigen "diff" - oder "diff3" -Werkzeugen kreativ zu werden, müssen Sie dies tun rausfinden.

Wenn Ihnen all dies viel Zeit kostet, sollten Sie sich genau ansehen, ob es sich wirklich lohnt, ein SCM zu emulieren. Wenn Sie der Meinung sind, dass es sich lohnt, sprechen Sie erneut mit Ihrem Chef. Zeigen Sie ihm die Vorteile Ihres manuellen SCM (nicht nur "Ich habe eine Kopie aller meiner alten Arbeiten", sondern "als Fehler XYZ auftrat, konnte ich sofort den Grund finden, vor 5 Releases"). Dann sag ihnen, wie viel schneller das gehen würde git.

Offensichtlich ist die Suche nach einem Job immer eine Option, wenn Sie dadurch verrückt werden.

AnoE
quelle
5

Ich denke, viele Leute hier vermissen die "Regierungsinstitution" dieser Frage. In einigen Regierungsnetzwerken sind sehr strenge Software-Bestimmungen zulässig, und das Verstoßen gegen diese Regeln ist eine strafbare Handlung, möglicherweise sogar eine Straftat. Ich würde es durch das Management drücken, um zu sehen, ob Sie eine GENEHMIGTE Bewegung bekommen, wenn Sie die Software installieren lassen. Ich würde nicht selbst Cowboy werden und Sachen installieren. Wenn Sie Linux / UNIX ausführen, prüfen Sie, ob RCS (ci / co-Befehle) oder SCCS (sccs-Befehl) installiert sind. Dies sind alte SCM-Tools, die früher ziemlich standardisiert waren. Es ist nicht schön, aber besser als das, was ich unten schreiben werde. :)

Da Sie "viel" Speicherplatz haben, erstellen Sie einen Quellbaum. Was sind die Grundlagen von SCM im Kleinen? Sie können Änderungen einchecken, sich ansehen, was sich geändert hat, Dinge markieren und bei Bedarf auf alte Versionen zurückgreifen. Erstellen Sie eine Ebene über dem Quelltextbaum ein Makefile oder Skripte, je nachdem, was Sie zur Verfügung haben, und gehen Sie dabei wie folgt vor (Linux / UNIX-konform, Windows-Befehle wären unterschiedlich).

make checkin - cp -a source-tree source-tree-date (mindestens auf die Minute genau, wenn nicht auf die Sekunde genau, wie source-tree-20171205115433)

make status - diff -R source-tree source-tree-date | less (hier gäbe es eine kleine Logik, standardmäßig die aktuellste Sicherung oder ein Argument, um sich von einer Version zu unterscheiden

make tag - ln -s Source-Tree-Date Release 1.0 (einen Link zu einer bestimmten Version erstellen)

make revert - rm -r Quellenbaum && cp -a Quellenbaum-Datum Quellenbaum

Matt Piechota
quelle
1
Windows-Befehle wären anders - ich denke, wenn Sie das Äquivalent in Windows-Befehlen bereitstellen, ist dies eine gute Antwort auf die Frage. Ich glaube, das hier verwendete Betriebssystem ist Windows (wegen VS 2005).
Emerson Cardoso
1
FWIW, diff existiert in Windows nicht. Das nächstgelegene scheint fc.exe zu sein, das nur für zwei Dateien funktioniert (nicht für Verzeichnisse). Alle anderen haben einfache Gegenstücke.
fede s.
4

Verkaufe es ihnen

Du hast diesen Kommentar hinterlassen :

Sie haben ein Netzlaufwerk, von dem ich nicht weiß, wie es aber Backups in bestimmten Zeiträumen erstellt. Ja. Ich benutze es und speichere meine Apps dort.

Gehen Sie zu Ihrem Vorgesetzten und sagen Sie etwas in diesem Sinne:

Boss, mir ist aufgefallen, dass wir ein System haben, in dem wir Apps auf das Netzlaufwerk stellen und eine Art Dienst Backups erstellt und den Verlauf verfolgt. Mir kommt es so vor, als würden wir auf diese Weise nur unser eigenes Quellcodeverwaltungssystem implementieren. Wir könnten wahrscheinlich viel Speicherplatz freisetzen und das gesamte System einfacher machen, indem wir auf ein dediziertes Versionsverwaltungssystem wie SVN oder Git umsteigen. Wir würden viele Vorteile haben: einfachere Sicherungen historischer Versionen, Tools zum Verstehen, welche Änderungen im Laufe der Zeit an Dateien vorgenommen wurden (sehr nützliche Informationen zum Debuggen), einfachere Methoden zum Rückgängigmachen von Fehlern und einfachere Methoden zum Kombinieren der Änderungen verschiedener Personen.

Ich habe diese Art von Systemen schon einmal verwendet und sie sind sehr gut in der Aufgabe, die unsere benutzerdefinierte Einrichtung erfüllt. Es ist viel schwieriger, Fehler mit ihnen zu machen, als es unser derzeitiges System ist. Sie sind auch sehr ausgereifte und weit verbreitete Technologien; Diese Werkzeuge sind seit über 20 Jahren weit verbreitet. Darüber hinaus können wir die gängigste Software verwenden, ohne einen Cent für die Lizenzierung zu zahlen.

Gerne helfe ich Ihnen, einen Client und einen Server auszuwählen und einzurichten. Ich gehe davon aus, dass die [insert estimate here]Installation nur Stunden dauern würde, wenn ich eine Maschine bekommen könnte. Jede Maschine würde es tun, sogar ein alter Desktop, der kurz vor dem Ruhestand steht, solange wir über das Netzwerk darauf zugreifen können.

Die Zusammenfassung auf hoher Ebene hier ist, dass Sie es in Begriffen ausdrücken müssen, die sie verstehen können und die wahrscheinlich denken, dass es sich lohnt:

  • Freisetzung von Ressourcen (Hardware und Personal) für andere Zwecke
  • Geringeres Risiko (menschliches Versagen, stabile Technologie)
  • Gestiegene Produktivität
  • Kleine Kosten für die Implementierung

Ihre Vorgesetzten sind keine Techniker und kümmern sich nicht um technische Probleme. Aber wenn Sie das Problem in Bezug auf Geld und Dinge, die Geld kosten, einrahmen können, könnten ihre Ohren ein wenig aufgehen.

jpmc26
quelle
1

Nachdem ich Ihre Frage und viele Kommentare gelesen habe, habe ich verstanden, dass Sie die folgenden Einschränkungen / Szenarien haben:

  • 1 Person pro Projekt;
  • Sie können einfach keine anderen externen Tools als Visual Studio 2005 für Ihr Projekt verwenden. Sie können weder GIT noch ein anderes SCM verwenden.
  • Wenn Sie lokal arbeiten, können Sie das Projekt nicht in einen fehlerhaften Zustand versetzen, da Sie von Zeit zu Zeit automatische Sicherungen durchführen und es die ganze Zeit zum Laufen bringen müssen.
  • Sie benötigen eine gewisse Historie, um Änderungen nachzuverfolgen.

Wenn Sie Visual Source Safe (mit Plug-In für VS 2005) nicht verwenden können, können Sie einen anderen Ansatz verwenden.

Ausgehend von den oben genannten Elementen empfehle ich Ihnen, Ihre Projektordner wie folgt zu organisieren:

trunk           //last functional version of the app. IMPORTANT: YOU DON'T WORK WITH THIS FOLDER
    UnitTests   //important: create unitary tests in order to guarantee stuff is working after changes
    MyClassLibrary1
    MyClassLibrary2
    MyApplication
    Docs
    readme.md
    YouProject.sln
temp              //your working folder; has structure similar to trunk; changes will be commited to trunk;
    UnitTests     //important: create unitary tests in order to guarantee stuff is working after changes
    MyClassLibrary1
    MyClassLibrary2
    MyApplication
    Docs
    readme.md
    YouProject.sln  
build
    .history    //folder to contain changes in files and your comment (like commits in git)
    build.bat   //calls MSBuild to build temp\YourProject.sln, and run all unit tests
    save_on_trunk.bat   //if build is working, saves info from "diff.bat" in folder within ".history" with timestamp, and also overrides "trunk" with content from "temp"
    diff.bat         //compares files from "temp" and "trunk", using "dir" and "fc" commands
    history.bat  //outputs content from .history folder (contains file changes and comments)

Grundregeln, die hier zu beachten sind:

  • Ihre Code-Kontrolle wird im Projektordner durchgeführt.
  • Sie arbeiten nie im "Kofferraum";
  • Sie arbeiten in "temp" , implementieren Unit - Tests , rufen build.bat und dann save_on_trunk.bat ;
  • WICHTIG: Implementieren Sie Komponententests, die vollständig isoliert ablaufen. Sie benötigen dies, um sicherzustellen, dass der neue Code den Kofferraum nicht beschädigt.
  • Da Sie über automatische Sicherungen verfügen, ist das Risiko eines Codeverlusts geringer. Daher müssen Sie nur den Code "trunk" so einstellen, dass er die ganze Zeit funktioniert.
Emerson Cardoso
quelle
1
Ich bitte den Downvoter, hier ein Feedback zu geben. Ich möchte meine Antwort auf die Frage " Codequalität ohne SCM beibehalten ? " Verbessern .
Emerson Cardoso
1

Sie haben keine technischen Lösungen mehr. Es bleiben nur politische Lösungen.

1) Vereinige die Entwickler. Wenn es bereits eine Gewerkschaft gibt, stellen Sie deren Position in Frage, da sie die Klasse der Arbeitnehmer, die Entwickler sind, nicht angemessen repräsentiert. Wenn die Gründung einer Entwicklervereinigung die Hälfte der Entwickler nicht unterstützt, wird GO. Sie sind eine schlechte Passform.

2) Zeitungsanzeige. Wenn Ihre Regierung keine Redefreiheit als anerkannte Rechtssache garantiert, werden Sie entlassen.

Joshua
quelle
1
1) Als jemand, der ein aktives Mitglied in einer Gewerkschaft ist, kann ich sagen, dass die Gewerkschaft absolut nichts dagegen unternehmen kann. Ziel der Gewerkschaften ist es, Tarifverhandlungen zu kontrollieren und sicherzustellen, dass der Arbeitgeber nicht gegen Tarifverträge verstößt. Je nach Arbeitgeber können Sie tatsächlich wegen des Versuchs, eine Gewerkschaft zu gründen, entlassen werden, wenn das Management davon Wind bekommt. 2) Auch wenn das Land seinen Bürgern Redefreiheit garantiert, können Sie als Angestellter immer noch nicht zu den Medien laufen. Sie können definitiv Feuer dafür sein.
SaggingRufus
1
Diese Antwort ist verlieren, Situation verlieren.
SaggingRufus
@SaggingRufus: Gewerkschaften können absolut verlangen, dass ihnen die richtigen Werkzeuge für den Job zur Verfügung gestellt werden. Arbeitnehmer-Arbeitgeber können nicht für ein privates Unternehmen in die Medien gehen, aber eine Regierungseinheit kann auf diese Weise zur Rechenschaft gezogen werden.
Joshua
1
Als jemand, der für eine Gewerkschaft in einem Technologieunternehmen arbeitet, kann ich Ihnen versichern, dass wir absolut nichts zu sagen haben. Sofern dies nicht zu einem Gesundheits- und Sicherheitsproblem wird, hat die Gewerkschaft keinen Platz. Ich stimme Ihnen in gewisser Hinsicht zu. Wenn dies nicht Softwear wäre, wäre der Teil des Kommentars "Die richtigen Werkzeuge für den Job" richtig. Nehmen wir zum Beispiel an, Sie sind Tischler in einer Gewerkschaft und Ihr Arbeitgeber hat sich geweigert, Ihnen eine Leiter zu kaufen. Zum Klettern müssen Sie 7 Stühle übereinander stapeln. DANN könnte man sagen, es ist die Pflicht des Arbeitgebers, Ihnen die richtigen Werkzeuge zur Verfügung zu stellen. An diesem Punkt ist es zu einem Sicherheitsproblem geworden.
SaggingRufus
0

Git für Windows hat eine "portable" Version . Sie können dies auf Ihren PC kopieren oder auf einem Memory Stick aufbewahren, ohne etwas installieren zu müssen. Wenn das Problem nur die Installation ist, ist dies eine Problemumgehung.

Beachten Sie, dass Sie gegebenenfalls gezielte Fragen zu ISO-9001, DO-178B oder anderen relevanten Standards für die Softwareentwicklung stellen möchten, wenn diese eindeutig gegen SCM sind.

Graham
quelle
1
dies scheint nur Punkte gemacht und erklärt in wiederholen diesem Stand der Antwort , die vor mehr als 20 Stunden gebucht wurde
gnat
@gnat Ich habe den Link dort nicht gesehen?
Graham
3
Sie können Ihren Link einfach als Kommentar zur anderen Antwort hinzufügen.
ICC97
0

Führen Sie git einfach über ein unbeschriebenes Verzeichnis aus, ohne dass ein Server beteiligt ist. Es spielt keine Rolle, dass niemand anders die Versionskontrolle verwendet, da Sie Ihr Verzeichnis versionieren können. Git wurde für genau dieses Szenario zur Einführung von Rogue SCM entwickelt und funktioniert gut.

Sie werden zu einem Helden, wenn die zweite Person sie benutzt, auch wenn Sie darauf warten müssen, dass ein Dinosaurier in den Eimer tritt, damit er sich ausbreitet. Es ist inkompetent, große Codebasen jetzt ohne SCM zu verwalten. Eigentlich ist es so, als würde man ein Unternehmen führen, ohne etwas zu auditieren.

rauben
quelle
-1

Tatsächlich gibt es drei verschiedene Dinge, auf die Sie als professioneller Entwickler bestehen sollten: Codeüberprüfungen, Versionsverlauf und Nachverfolgung von Änderungsanforderungen.

Sie können Änderungswünsche selbst nachverfolgen. Nicht so schön wie mit den richtigen Werkzeugen, aber Sie können. Der zweite Teil ist Codeüberprüfungen. Dazu benötigen Sie die vorherige Kopie Ihres Codes und ein Diff-Tool. Wenn Sie glauben, dass eine Änderung fertig ist, überprüfen Sie diese selbst, indem Sie sie sorgfältig mit der vorherigen Version vergleichen, und ersetzen Sie dann die vorherige Version durch eine neue.

Für die Versionskontrolle benötigen Sie eine Schachtel mit beschreibbaren DVDs, wenn Ihr Arbeitsplatz keine anständige Lösung zulässt. Jedes Mal, wenn Sie eine Version haben, zu der Sie immer wieder zurückkehren möchten, erstellen Sie eine neue DVD.

(Offensichtlich ist all dies kein Ratschlag, der befolgt werden sollte, es sei denn, Sie befinden sich an einem wirklich schlechten Arbeitsplatz, wie es der OP anscheinend ist.)

gnasher729
quelle