FreeBSD svn->git Umstellung beginnt

Yamagi

Possessed With Psi Powers
Teammitglied
Hallo,
FreeBSD ist eines der letzten großen Open Source Projekte, was noch svn anstelle des inzwischen nahezu allgegenwärtigen git nutzt. Nachdem bereits im letzten Jahr beschlossen wurde auf git umzustellen, ist es nun so weit. Am kommenden Wochenende zieht das FreeBSD Documentation Project - oder kurz doc/ - als erstes Teilprojekt um. Einen genauen Fahrplan gibt es hier: https://github.com/bsdimp/freebsd-git-docs/blob/main/doc-cutover-schedule.md

Die Umstellung von svn auf git ist ein sehr umfangreiches Projekt, bei dem die eigentliche Migration des Repositories nur ein kleiner Teil ist. Das Umstellung durchführende Team musste eine Reihe weiterer Aufgaben erledigen, angefangen vom Anpassen der Dokumentation, über die Analyse diverser Arbeitsabläufe bis hin zu Änderungen an einer Vielzahl Tools und Dienste. Das FreeBSD Documentation Project ist das kleinste der drei Teilprojekte, weshalb es sozusagen als Testballon genutzt wird. Die Ports und das Basissystem werden in naher Zukunft folgen.

Mit der Umstellung ergeben sich einige neue URLs:

* Das autoritative Repository findet sich unter https://git.freebsd.org, das zugehörige Webinterface unter https://cgit.freebsd.org
* Die derzeit das svn-Repository spiegelnden Github (https://github.com/freebsd) und Gitlab (https://gitlab.com/FreeBSD) Organisationen werden auf das autoritative Repository umgestellt werden. Dabei ergeben sich neue Commit-Hashes, Nutzer müssen ihre lokale Kopie also einmal per Reset zurücksetzen.

Wichtig ist noch zu erwähnen, dass es sich hierbei lediglich um die Umstellung der Repositories handelt. Weitere Dinge werden später in weiteren Schritten kommen.
 
Kein Sorge inzwischen kann Git mit so großen Repos umgehen. Der Konverter ist auch ausreichend getestet, aber die Prozesse aufzusetzen ist halt lästig.
 
Ich bin etwas spät zur Party, da ich die letzten Tage wenig Zeit hatte Mails zu lesen, aber dieses Wochenende wird mit Base das zweite und komplexeste Teilprojekt umgestellt. Der letzte svn-Commit wird heute spät in der Nacht europäischer Zeit sein, der erste git-Commit am Dienstag-Vormittag. Grund für die lange Zeit dazwischen ist, dass es sehr lange dauert das doch recht große und mit seinen diversen Branches sowie Tags sehr komplexe svn-Repository zu konvertieren. Der Zeitplan ist hier: https://wiki.freebsd.org/git

Das dritte Teilprojekt, die Ports, werden erst im Frühjahr 2021 auf git umstellen. Hauptgrund ist, dass diverses Tooling direkt und indirekt an svn hängt und es entsprechend mehr Zeit braucht die Umstellung vorzubereiten.
 
wie sieht das eigentlich für mich als Endanwender aus?
Muss ich irgendwas ändern?
Oder fließt das automatisch in pkg und ports-management ein?

Mir ist natürlich irgendwie klar, dass ich dann, wenn ich die Sourcen brauchen sollte, nicht mehr svn oder svnlite benutze. Irgendwie klar heißt aber in dem Zusammenhang: eigentlich ist mir gar nichts klar!
Was benutze ich denn statt dessen?
Und hat das Auswirkungen auf mein regelmäßiges pkg upgrade oder freebsd-update? Oder wird das alles unter der Haube automatisch eingetütet?
 
Erst einmal hat das keine direkten Auswirkungen. Der Code wird sogar vorübergehend weiter ins svn exportiert, wobei es natürlich eine gute Idee ist seine lokalen Kopien halbwegs zeitnah auf git zu migrieren. Da git->svn-Exporter durch unterschiedlich Konzepte in Sachen Branches und Merges fragil sind, wird das wirklich nur vorübergehend sein. Um den Code aus git zu klonen, wird man vorerst per pkg install git git installieren müssen. Mittelfristig soll vielleicht OpenBSDs got - https://gameoftrees.org - ins Basissystem aufgenommen werden, aber das ist noch nicht weit genug und vielleicht auch gar nicht sinnvoll.

freebsd-update hängt nicht am svn, daher wird sich dort nichts ändern. Allerdings ist pkgbase in 13-CURRENT endlich fertig, bzw. in einem benutzbaren Zustand. Die nächste Poudriere-Version wird auch endlich die entsprechenden Pakete unterstützen. Es ist meines Wissens noch nicht final entschieden, aber ich würde mal davon ausgehen, dass es trotzdem den 13.x-Zyklus über noch bei freebsd-update bleibt. Dennoch wird pkgbase für alle, die größere Mengen Systeme aktuell halten müssen, ein Segen sein.

Bei den Ports fehlt mir der Überblick. Die Idee, sich von portsnap komplett zu trennen und git für alles zu nehmen, wurde im Sommer erstaunlich widerspruchslos hingenommen. Aber keine Ahnung, wie spruchreif das ist. Zu 13.0 wird es wahrscheinlich sowieso nicht umgesetzt werden.
 
Das System läuft erst mal. Wenn die Hashes noch mal neu generiert werden wiederhole ich den Vorgang eben. Das war erstaunlich unkompliziert.
 
Mein .git is 4.2 GiB groß. Der Fairness halber muss man aber sagen, wenn man alle SVN branches haben will wird es glaube ich nicht weniger.
 
Bei weniger als 10 Cent pro SSD-Gigabyte eine vernachlässigbare Größe. :)
Ich zahle wegen ZFS mirror im Laptop das doppelte (2 NVME Slots waren ein hartes Kaufkriterium bei dem Laptop), aber für mich ist das immer noch in Ordnung.

Dazu kommt, dass es immer weniger Gründe gibt das Repository zu benutzen. Ich benutze ich weil ich Features von 13-current auf 12-stable portiert habe. Und aus Gewohnheit.
 
Wenn man das komplette Repo klont, wird die git-Arbeitskopie natürlich deutlich größer als eine ähnliche svn-Arbeitskopie sein. Schon alleine, da die ganze Historie enthalten ist. Eine mit --depth 1 geklonte git-Arbeitskopie einer Branch ist allerdings sogar kleiner als eine entsprechende svn-Arbeitkopie:

Code:
# du -sh *
1.1G    12.2-RELEASE-svn/
645M    12.2-RELEASE-git/
 
Und da ist der erste git-Commit:

Code:
From: Li-Wen Hsu <lwhsu@FreeBSD.org>
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject: git: 5ef5f51d2bef - Mark the repository has been converted to Git
Date: Wed, 23 Dec 2020 04:29:09 GMT
Sender: owner-dev-commits-src-all@freebsd.org

The branch main has been updated by lwhsu:

URL: https://cgit.FreeBSD.org/src/commit/?id=5ef5f51d2bef80b0ede9b10ad5b0e9440b60518c

commit 5ef5f51d2bef80b0ede9b10ad5b0e9440b60518c
Author:     Li-Wen Hsu <lwhsu@FreeBSD.org>
AuthorDate: 2020-12-23 04:27:27 +0000
Commit:     Li-Wen Hsu <lwhsu@FreeBSD.org>
CommitDate: 2020-12-23 04:27:27 +0000

    Mark the repository has been converted to Git
    
    This is the first Git commit to src.
    
    Sponsored by:   The FreeBSD Foundation
---
 README    | 2 --
 README.md | 2 --
 2 files changed, 4 deletions(-)

diff --git a/README b/README
index eb38522b1357..aad363baf9ea 100644
--- a/README
+++ b/README
@@ -1,5 +1,3 @@
-This repository is being converted from Subversion to Git.
-
 This is the top level of the FreeBSD source directory.  This file
 was last revised on:
 $FreeBSD$
diff --git a/README.md b/README.md
index 0eba39438e46..72bd634cd813 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,3 @@
-This repository is being converted from Subversion to Git.
-
 FreeBSD Source:
 ---------------
 This is the top level of the FreeBSD source directory.  This file
_______________________________________________
dev-commits-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all
To unsubscribe, send any mail to "dev-commits-src-all-unsubscribe@freebsd.org"
 
Wie ist das eigentlich mit dem Tooling? Bekommen wir auch einen modernen git workflow als Ersatz für Bugzilla? Dann würde ich mich auch wieder mit Hingabe meinen Ports widmen und vielleicht auch neue erstellen!
 
Es hieß im Dezember, dass man sich über Tooling und Workflows nach der Migration Gedanken machen wird. Mehr weiß ich aber auch nicht.

Das meintest du gar nicht, aber recht sicher ist wohl, dass svn demnächst aus dem Basissystem fliegen wird. Dafür wird gitup (https://github.com/johnmehr/gitup) als eine minimalst mögliche git-Implementierung zum Synchronisieren von Repos mit lokalen Verzeichnisbäumen aufgenommen werden. Es wird wohl u.a. portsnap ersetzen.
 
Es hieß im Dezember, dass man sich über Tooling und Workflows nach der Migration Gedanken machen wird. Mehr weiß ich aber auch nicht.
Alles klar! Ich habe Hoffnung :)

Das meintest du gar nicht, aber recht sicher ist wohl, dass svn demnächst aus dem Basissystem fliegen wird. Dafür wird gitup (https://github.com/johnmehr/gitup) als eine minimalst mögliche git-Implementierung zum Synchronisieren von Repos mit lokalen Verzeichnisbäumen aufgenommen werden. Es wird wohl u.a. portsnap ersetzen.
Ah, interessant! Als BSD-lizensierten Git-"Client" gibt es ja auch noch GameOfTress aus dem OpenBSD-Lager: http://gameoftrees.org/
 
... und hier, wie man poudriere auf den Stand bringt, wieder ports zu bauen.
Bapt wird das sicher demnächst in poudriere standardmäßig ändern, bis dahin:

git-tiny reicht . ( mit poudriere den flavor 'tiny' als devel/git@tiny in die pkglist eintragen und bauen )
git.tiny installieren.

in /usr/local/share/poudriere/common.sh die URL ändern, Zeile 6697
Code:
${GIT_PORTSURL="github.com/freebsd/freebsd-ports.git"}    <----  ALT
nach
${GIT_PORTSURL="git.freebsd.org/ports.git"}   <----  NEU

Mit poudriere alte ports entfernen

nueuen portstree holen
Code:
poudriere ports -c  -m git+https -B main -p '$meinschönerportstreename'
 
Warum änderst du den Host? Github.com wird doch auch weiterhin als Mirror aktuell bleiben oder nicht?
 
Zurück
Oben