AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Kennt sich hier jemand mit WinCVS aus?
Thema durchsuchen
Ansicht
Themen-Optionen

Kennt sich hier jemand mit WinCVS aus?

Ein Thema von daniel775 · begonnen am 10. Okt 2017 · letzter Beitrag vom 22. Okt 2017
Antwort Antwort
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.960 Beiträge
 
Delphi 12 Athens
 
#1

AW: Kennt sich hier jemand mit WinCVS aus?

  Alt 10. Okt 2017, 21:14
Sehe ich das richtig, dass bei Git oder SVN die Sourcen auf einen öffentlichen Server geladen werden müssen? Bzw. die Profile zur Verwaltung öffentlich sind?
Schau dir einfach mal meinen Link an. Da lege ich genau ein lokales Repository an und zeige wie man damit arbeitet.

Auch für dieses lokale Arbeiten ist Git tausendmal besser geeignet als CVS.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Kennt sich hier jemand mit WinCVS aus?

  Alt 10. Okt 2017, 21:33
Hallo,
für SVN gibt es VisualSVN als lokalen SVN-Server.
Dann noch Tortoise-SVN als Browser-Erweiterung und fertig ist der Lack.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.960 Beiträge
 
Delphi 12 Athens
 
#3

AW: Kennt sich hier jemand mit WinCVS aus?

  Alt 10. Okt 2017, 22:08
für SVN gibt es VisualSVN als lokalen SVN-Server.
Dann noch Tortoise-SVN als Browser-Erweiterung und fertig ist der Lack.
Das ist hier denke ich gar nicht nötig und zudem kann SVN weniger als Git. Aber auch diese Konstellation habe ich beschrieben:
https://www.entwickler-ecke.de/topic..._112612,0.html
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
549 Beiträge
 
#4

AW: Kennt sich hier jemand mit WinCVS aus?

  Alt 11. Okt 2017, 08:28
Wir haben auch vor 1-2 Jahren GIT benutzt und sind alle begeistert.
Ok die Drittanbieter Clients sind nun nicht die besten, aber mit etwas einarbeit kommt man auch mit der Kommandozeile an alles dran.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.960 Beiträge
 
Delphi 12 Athens
 
#5

AW: Kennt sich hier jemand mit WinCVS aus?

  Alt 11. Okt 2017, 10:06
Ok die Drittanbieter Clients sind nun nicht die besten, aber mit etwas einarbeit kommt man auch mit der Kommandozeile an alles dran.
Ich finde das Mergen auf der Kommandozeile absolut schrecklich. Das dauert ewig im Vergleich mit einem ordentlichen Tool wie BeyondCompare.

Das verwenden wir mit TortoiseGit zusammen und sind auch sehr zufrieden mit beidem.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
daniel775

Registriert seit: 27. Nov 2010
46 Beiträge
 
#6

AW: Kennt sich hier jemand mit WinCVS aus?

  Alt 14. Okt 2017, 15:56
Ok, da ich das erste mal mit solchen Tools arbeite ergeben sich ein paar Fragen.
Und da ich am Anfang zu sehr Angst habe unwiederruflich Fehler zu machen bzw. dadurch Stundenlange
Arbeit zu verlieren, werde ich warscheinlich weiterhin ein gewisse Zeit parallel den ganzen Projektordner zwischenspeichern.
Ein zusätzliches Backup vom Projekt ist ja sowieso ratsam.


Versionskontrolle ist ein Thema mit verschiedenen Blickwinkeln.
Ich würde mal gerne eure Meinung zu folgenden Konzepten hören bzw. Vorschläge für Verbesserungen oder besserer Wartbarkeit.

Datei Version.inc
Code:
{$DEFINE SVERSION}
const
  SVERSION = 1001;
Datei Unit1.pas
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

{$I 'Version.inc'}

type

{$IFDEF SVERSION}
  {$IF SVERSION > 1000}
  TObjState = (
    stReady = 0,
    stWriting,
    stReading,
    stErrors,
    stDone
  );
  {$ELSE}
  TObjState = (
    stReady = 0,
    stInProgress,
    stErrors,
    stDone
  );
  {$IFEND}
{$ELSE}
  TObjState = (
    stReady = 0,
    stInProgress,
    stErrors,
    stDone
  );
{$ENDIF}

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    function getStateAsWord(objState: TObjState): Word;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.getStateAsWord(objState: TObjState): Word;
begin
{$IFDEF SVERSION}
  {$IF SVERSION <= 1000}
    case Ord(objState) of
      0: result := Ord(stReady);
      1: result := Ord(stInProgress);
      2: result := Ord(stErrors);
      3: result := Ord(stDone);
    end;
  {$ELSEIF SVERSION > 1000}
    case Ord(objState) of
      0: result := Ord(stReady);
      1: result := Ord(stWriting);
      2: result := Ord(stReading);
      4: result := Ord(stErrors);
      5: result := Ord(stDone);
    end;
  {$IFEND}
{$ELSE}
  case Ord(objState) of
    0: result := Ord(stReady);
    1: result := Ord(stInProgress);
    2: result := Ord(stErrors);
    3: result := Ord(stDone);
  end;
{$ENDIF}
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  i := getStateAsWord(stInProgress);
end;

end.
Bei dem oberen Konzept ist mir klar, das je größer ein Projekt wird desto unübersichtlicher wird der Sourcecode und die Wartbarkeit leidet.
Redundanzen in unterschiedlichen Versionen trägt nicht zur lesbarkeit bei.
Ist aber eine schöne Möglichkeit für Migrationen. Der Compiler hilft beim überprüfen von Abhängigkeiten und beim hinzufügen der richtigen Versionsabhängigen Sourcen.

Ist dieses Konzept durch gute CVS Systeme veraltet?


unit1.pas vom 01.10.2017 um 13:11 Uhr, TAG "Version1000" im GIT
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type

  TObjState = (
    stReady = 0,
    stInProgress,
    stErrors,
    stDone
  );

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    function getStateAsWord(objState: TObjState): Word;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.getStateAsWord(objState: TObjState): Word;
begin
  case Ord(objState) of
    0: result := Ord(stReady);
    1: result := Ord(stInProgress);
    2: result := Ord(stErrors);
    3: result := Ord(stDone);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  i := getStateAsWord(stInProgress);
end;

end.


unit1.pas vom 10.10.2017 um 20:23 Uhr, TAG Version1001 im GIT
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type

  TObjState = (
    stReady = 0,
    stWriting,   // HINZUGEFÜGT
    stReading,   // HINZUGEFÜGT
    stErrors,
    stDone
  );

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    function getStateAsWord(objState: TObjState): Word;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.getStateAsWord(objState: TObjState): Word;
begin
  case Ord(objState) of
    0: result := Ord(stReady);
    1: result := Ord(stWriting);  // HINZUGEFÜGT
    2: result := Ord(stReading);  // HINZUGEFÜGT
    4: result := Ord(stErrors);
    5: result := Ord(stDone);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  i := getStateAsWord(stReading);
end;

end.
Wie sieht eure Versionierung aus?

Wann beginnt sie?
Schon in der Entwicklungsphase oder spät kurz vor Veröffentlichung?

Wo fängt eure Versionshistorie an?
Beispiel:

Major, Minor, Release, Build

0.1.0 Build 0: Projektstatus: alpha: Beginn des Projekts
0.1.0 Build 5: Projektstatus: alpha: Mainform mit der Menüstruktur
0.2.0 Build 26: Projektstatus: alpha: Mainform mit Menüstruktur und ersten funktionen
0.2.1 Build 40: Projektstatus: alpha: Bugfix bei den ersten funktionen
0.3.0 Build 48: Projektstatus: alpha: Mainformfunktionalität erweitert
...
0.6.1 Build 102: Projektstatus: alpha: Bugfix an der Klasse xy
0.6.2 Build 105: Projektstatus: alpha: Bugfix an der Klasse xyz
0.7.0 Build 120: Projektstatus: beta: Datenbankanbindung in den Mainform integriert
...
0.11.0 Build 320: Projektstatus: beta: Neue Datenbankfelder hinzugefügt
0.11.1 Build 355: Projektstatus: beta: Bugfix Querykomponente in Form xy für neue Datenbankfelder angepasst.
0.11.1 Build 357: Projektstatus: beta: Erste Betatests
0.11.2 Build 360: Projektstatus: beta: Diverse Bugfixes
1.0.0 Build 365: Projektstatus: stable: Erste Veröffentlichung
1.0.1 Build 368: Diverse Bugfixes
1.1.0 Build 385: Neue Klasse xy hinzugefügt
1.1.1 Build 390: Diverse Bugfixes an der neuen Klasse
2.0.0 Build 553: Mainform überarbeitet, Toolbarleiste hinzugefügt, Statusleiste hinzugefügt, verhalten beim Resizing angepasst etc.

Welches Konzept verfolgt ihr dabei? Um Major, Minor, Release zu inkrementieren?
inc Release: Bugfixes?
inc Minor: Änderung vom Funktionsumfang?
inc Major: Bei Inkompatibilität zu kleinen Versionen bzw. bei grundlegenden Veränderungen am Aussehen oder Features?


Was sind sinnvolle Namen für Tags oder branches CVS Systemen?
RC_1, alpha, beta?

Wann und zu welchen Zeitpunkt sollten diese angelegt werden?


Wie sehen eure Update Konzepte aus? Nutzt ihr vorgefertigte Komponenten?
- FTP-Server und Ordnerstruktur
- Download der nötigen Dateien (HTTP? FTP?)
- Methoden zum Versionsvergleich
- Updatemethoden ( shellexecute(0, 'open', '.\update.exe', nil, nil, SW_NORMAL), self.close ?)

Geändert von daniel775 (14. Okt 2017 um 16:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Kennt sich hier jemand mit WinCVS aus?

  Alt 14. Okt 2017, 16:22
Für die ganzen neuen Fragen solltest du neue Threads erstellen.
Konzentrieren wir uns doch hier auf das Theme Quellcodeverwaltung.


Zitat:
Und da ich am Anfang zu sehr Angst habe unwiederruflich Fehler zu machen bzw. dadurch Stundenlange Arbeit zu verlieren,
Kann mit einer Quellcodeverwaltung eigentlich nicht passieren.
Außer zu "spielst" zu viel mit branches rum und verlierst den Überblick.

Zitat:
werde ich warscheinlich weiterhin ein gewisse Zeit parallel den ganzen Projektordner zwischenspeichern.
Sichere die Datenbank der Quellcodeverwaltung und gut ist.

Zitat:
Ein zusätzliches Backup vom Projekt ist ja sowieso ratsam.
Deine Quellcodeverwaltung ist dein Backup.
Das solltest du gut und regelmäßig sichern. Mindestens 1* pro Tag.
In manchen Firmen werden Backups sogar mehrmals pro Tag durchgeführt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz