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.
quelle
Antworten:
Sie können die Rolle, die die Quellcodeverwaltung spielt, mit drei einfachen Tools lose replizieren:
Grundsätzlich wird Ihr Workflow:
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.
quelle
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.
quelle
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
.git
Repository) 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
git
undsvn
und dass Sie wissen , die technische Überlegenheitgit
, wenn Sie nicht einmal erlaubt , ein Programm wie die Installationgit
auf 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
git
Server fungiert. Das Installierengit
und Konfigurieren von regelmäßigen Sicherungen (mit einigencrontab
Aufgaben) ist sehr einfach. Beachten Sie, dass eingit
Server 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 entwicklerfreundlicherSie 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 Verwenden
git
(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,git
ohne Administratorrechte zu installieren und dann zu verwenden , vorausgesetzt, Sie haben genügend Ressourcen (Zeit, Speicherplatz, einige C-Compiler usw.) dafür.Dies kann durch eine bestimmte Konfiguration und Kompilierung Ihres
git
odersvn
des freien Software- Quellcodes vongit
oder 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,git
bevor 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.quelle
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:
patch
unddiff
vor 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:
patch
unddiff
für das Team zu ersetzen.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.
quelle
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:
quelle
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
git
das gesamte Repository heruntergeladen werden muss, um nach den Änderungen zu suchen ...git
wird 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
git
einigen 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 esgit
"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.quelle
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
.git
in Ihrem Anwendungsstamm, sonst nichts.Bitten Sie Ihren Chef / Ihre IT-Abteilung nicht um ein "SCM", sondern speziell um die Installation
git
auf 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.
quelle
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
quelle
Verkaufe es ihnen
Du hast diesen Kommentar hinterlassen :
Gehen Sie zu Ihrem Vorgesetzten und sagen Sie etwas in diesem Sinne:
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:
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.
quelle
Nachdem ich Ihre Frage und viele Kommentare gelesen habe, habe ich verstanden, dass Sie die folgenden Einschränkungen / Szenarien haben:
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:
Grundregeln, die hier zu beachten sind:
quelle
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.
quelle
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.
quelle
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.
quelle
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.)
quelle