2016-06-02 15 views
2

Ich bin gespannt, was ist die beste Praxis, Ihre gelegentlichen Beiträge zu einem OSS-Projekt in git (z. B. auf github/bitbucket/gitlab) zu halten, während der Upstream ausschließlich CVS ist.Was ist die beste Vorgehensweise beim GIT, wenn der Upstream 100% CVS ist?

My take ist, dass es sehr bequem ist einfach CVS/{Entries,Repository,Root} zu begehen direkt in git, und dann jederzeit und von jedem Feld, können Sie einfach Ihre git Repo-Kasse (w/git) und dann von der realen Upstream-Aktualisierung mit cvs up , was genau ich mit my OpenBSD ports-readmes fork, sowie mdocml mache.

Allerdings habe ich bemerkt, dass die meisten Leute ziemlich überrascht und verwirrt sind, diese CVS-Dateien in diesen Git-Repositories auf meinem GitHub zu sehen, angeblich denkend, dass es eine Art von Versehen meinerseits ist. Außerdem hat zum Beispiel reyk's httpd keinen solchen Aufbau, obwohl er ihn anscheinend normalerweise von der stromaufwärtigen Seite in großen Mengen aktualisiert, ohne das Protokoll von der stromaufwärtigen Seite zu erhalten.

Fehle ich hier etwas? Ich habe das Gefühl, CVS/{Entries,Repository,Root} in Ihrem Git-Repository zu haben ist eine großartige Idee, aber ich habe noch nie jemanden anderen dabei gesehen. Warum?

+0

Ein ziemlich großes Problem beim Übertragen Ihrer CVS-Metadaten ist, dass es spezifisch für Sie und Ihre Auscheckversion ist. Die Art, wie ich es gemacht habe, ist 'CVS' zu' .gitignore' hinzuzufügen. Auf diese Weise kann ich immer noch sowohl git als auch cvs benutzen und der Rest der Welt benutzt nur git ohne die Idee, dass ein cvs repo involviert ist. –

+0

@BurhanAli, nein, das ist der ganze Sinn von cvs - die CVS-Metadaten sind NICHT spezifisch für mich, aber sie sind spezifisch für meine checkout-Version, was der springende Punkt ist, da es dieselbe Version ist, die git verpflichtet ist. Ich kann keinen Nutzen darin sehen, den gesamten 'CVS /' zu '.gitignore' hinzuzufügen, denn dann, wenn Sie Ihren lokalen Git-Checkout bereinigen, sind die CVS-Daten irreparabel verschwunden. Wie ist das für jeden besser? Wenn Sie mir nicht glauben, versuchen Sie http://github.com/cnst/mdocml, sollte es wie mit Git und CVS (nach dem Auschecken mit Git zuerst) auf jedem modernen System funktionieren. – cnst

+0

Vielleicht ist es ein Artefakt wie cvs dann benutzt wird. Ich benutzte die 'extssh'-Methode und so enthielten meine' Root'-Dateien etwas wie 'username @ hostname:/repopath', was für andere nicht nützlich wäre. Ich habe das Verzeichnis auch nicht gelöscht, weil ich immer aktiv daran gearbeitet habe. Denken Sie sorgfältig darüber nach, ob diese Dateien für andere nützlich sind und ob ihre Anwesenheit zu Verwirrung führen wird. –

Antwort

1

Ich habe das Gefühl, dass CVS/{Entries, Repository, Root} in Ihrem Git-Repository eine großartige Idee ist, aber ich habe noch nie jemanden anderen dabei gesehen. Warum?

Es scheint eine gute Idee, aber es verwechselt auch Metadaten (CVS-Referenz) mit Daten (Ihre Dateien des Repo).

Aus diesem Grund merken sich git-svn zum Beispiel die gleiche Art von Referenz in der Git-Konfiguration (lokale Konfigurationsdatei, nicht Teil des Repos).
Wer sich zum Upstream-SVN-Repo beitragen will, muss sich erneut an eine git svn clone wenden. Eine Zwischenlösung wäre in der README zu erklären, dass ein Benutzer diese CVS-Referenzdateien erstellen muss, sobald der Repo geklont ist, sollte er/sie zurück zu (CVS) Upstream beitragen möchte.

+0

Thing ist - Git-CVS-Integration ist rostig, so scheint die Mischung der alten Metadaten mit Daten wie der beste Ansatz. Und wie würden Sie in der README sogar erklären, wie diese 'CVS'-Dateien erzeugt werden? Es ist sehr nicht-trivial, da sie auf die genauen Versionen verweisen müssen, die Ihr Repository enthalten soll. – cnst

+0

@cnst ich stimme zu, Ich habe nur versucht, eine Zwischenposition zu finden, nicht zu empfehlen, git-cvs zu verwenden. Ich habe git-svn verwendet, um zu veranschaulichen, warum diese Art von Datei im Allgemeinen * nicht * in einem Git Repo ist. – VonC

+0

Aber ich denke, dass die Zwischenlösung, die Sie vorschlagen, tatsächlich schlechter ist als irgendeine der Alternativen. Warum kann man es sogar als Möglichkeit vorschlagen, wenn es nicht per se machbar ist? – cnst