2008-10-06 18 views
6

Ich bin ein großer Subversion-Fan und bin gerade dabei, eine große Website (ca. 200 MB) zu übernehmen. Ich habe die Hauptseite von einer Originalgröße von 500 MB getrimmt !!mit Subversion mit einer wirklich sehr großen Website

Ich bin dabei, diese Website in ein neues Subversion-Repository zu überprüfen. Das Problem ist, dass mein Subversion-Repository remote gehostet wird, so dass ein anderer Kollege auch auf der Site arbeiten kann.

Ich bin besorgt darüber, ein- und auschecken 200 MB jedes Mal, wenn ich Updates auf der Website vornehmen muss.

Die Entwicklung ist ziemlich aktiv, so dass sich ständig viele Dinge ändern werden.

Vorausgesetzt, ich bekomme alles eingecheckt in Ordnung, wird Subversion sicherstellen, dass es nur neue/geänderte Dateien/Ordner herunterladen jedes Mal wenn ich eine neue Kasse mache oder werde ich auf 200MB warten jedes Mal herunterladen?

Antwort

12

Sofern ich mich nach dem ersten Ein-/Auschecken nicht geirrt habe, behandeln Sie nur .diff-Dateien, so dass Sie nur die Änderungen herunterladen/hochladen müssen (nicht die ganze Datei, sondern nur die geänderten Zeilen) ASCII), das zwischen den Dateien auf dem Client/Server existiert.

Das erste comit/update wird jedoch schrecklich sein.

+0

200mb sollte nicht zu schlecht für die erste Festschreibung sein, vorausgesetzt, Sie haben eine angemessene Internetverbindung. Du hast recht, svn wird von da an nur die Änderungen senden. – Ferruccio

+0

Bei den meisten Heimverbindungen, bei denen das Halbduplex-Hochladen so hoch ist, wird Ihre Verbindung fast nutzlos, bis Sie fertig sind. –

+0

@Chad: Ich muss hier nicht zustimmen. Ich habe kein Problem über Kabel oder DSL. – GEOCHET

0

Wenn viele Änderungen häufig gemacht werden, warum nicht einen Cron-Eintrag, der ein Subversion-Update durchführt, um Ihre lokale Kopie auf dem neuesten Stand zu halten, sagen wir alle 6 Stunden?

Auf diese Weise erhalten Sie aktuelle Diffs (oder keine, wenn es nicht in ein paar Stunden aktualisiert wurde), anstatt den ganzen Shebang.

BEARBEITEN: zur Klarstellung, wenn viele Änderungen passieren, aber nur auf ein paar Seiten gleichzeitig, wird jede gegebene commit/update klein sein; Wenn sie auf allen/den meisten Websites erstellt werden, ist es wichtig, regelmäßig auf dem neuesten Stand zu bleiben.

0

Es sendet nur die Änderungen, wenn Sie aktualisieren oder kommentieren. Dir sollte es gut gehen.

0

Subversion erhält nur Diffs/Updates, so dass Sie beim ersten Mal nur die vollständige Kasse haben. Spätere Updates werden nur geändert.

Um bei der Zusammenführung zu helfen, könnte es gut sein, zwei Arbeitskopien zu haben - eine zeigt auf die Hauptcodeline, eine auf Ihre Aufgabenverzweigung. Auf diese Weise müssen Sie Ihre Arbeitskopie nicht von einer Subversion-Codelinie auf eine andere umstellen - das kann teuer werden, wie zum Beispiel den Code zu überprüfen.

0

Es werden nur die Dateien heruntergeladen, die zwischen diesem Zeitpunkt berührt wurden. Wenn Sie jedoch verzweigen (wie Sie sein sollten), dann könnten Sie lange warten.

Wie viel des Projekts wird tatsächlich benötigt? Ich bezweifle, dass es 200MB Quelle gibt. Wenn es sich bei vielen der Daten um Ressourcen handelt, die sich nur sehr selten ändern (z. B. Bilder), sollten Sie darüber nachdenken, die Repositorys in kleinere Projekte aufzuteilen.

1

Wie bereits erwähnt, überträgt commit/update nur diffs und ist ziemlich schnell. Checkouts sind zeitaufwändiger - benutzen Sie den svn Switch, um schnell zwischen den Filialen zu wechseln.

Auch das HTTP/WEBDAV-Transportprotokoll ist nicht sehr effizient, besonders im Umgang mit vielen kleinen Dateien (z. B. Quellcode :)) - Sie könnten stattdessen svnserve verwenden.

200 MB Daten sollten nicht zu viel Mühe für Subversion sein - aber wenn Speicherplatz und effiziente Datenübertragung wirklich ein Problem sind, könnten Sie auch in git oder mercurial suchen. Vor allem Git ist viel effizienter, aber Sie werden wahrscheinlich ein wenig mehr Zeit brauchen, um sich mit den Konzepten der verteilten Quellcodeverwaltung herumzuschlagen, und Sie müssen vorerst auf ausgefallene GUI-Tools verzichten (auch die Kommandozeilen-Tools sind viel mehr geworden) in letzter Zeit verwendbar).

könnte dieser Link auch interessant sein: Website Auto Update

+0

ist die Transportprotokoll-Effizienz ein sehr wichtiger Punkt – Jean

1

Ich betreiben Websites, die total rund 5 GB oder mehr sind. (und ein Build-System, das Änderungen an vielen Dateien für jeden Build vornimmt). Also, das Delta wäre leicht 200MB (und zu einer entfernten Seite). SVN ist damit völlig in Ordnung. Es hängt auch davon ab, wie gut Ihr Apache halten kann (wenn Sie Apache verwenden).

5

Eine andere Sache im Auge zu behalten ist, dass Sie Kopien Ihrer ausgecheckt Ordner machen können, und sie werden nach wie vor gültig Arbeitskopien sein:

svn checkout http://server/path/to/repos my_working_copy 
cp -a my_working_copy another_working_copy 
svn status another_working_copy 

, die eine Menge Zeit/Bandbreite sparen können, wenn Sie mehrere benötigen Arbeitskopien. Es macht auch Verzweigungen und viel schneller

svn checkout http://server/path/to/trunk my_trunk 
cp -a my_trunk my_branch 
cd my_branch 
svn switch http://server/path/to/branches/stable 

Schalt Wie in anderen Antworten darauf hingewiesen wurde, werden Sie nur die Unterschiede zwischen dem Stamm und Zweig herunterladen.

Verwandte Themen