2016-03-23 7 views
11

Ich habe Git für eine Weile verwendet, aber erst vor kurzem mit Packrat begonnen. Ich möchte, dass mein Repository eigenständig ist, aber gleichzeitig möchte ich keine CRAN-Pakete hinzufügen, wie sie verfügbar sind. Es scheint, sobald R in einem Projekt mit Paket geöffnet wird, wird es versuchen, Pakete aus der Projektbibliothek zu verwenden; Wenn sie nicht verfügbar sind, wird es versuchen, von Src in der Projektbibliothek zu installieren; Wenn sie nicht verfügbar sind, werden die auf diesem Computer installierten Bibliotheken angezeigt. Wenn eine Bibliothek auf dem Computer nicht verfügbar ist; Würde es CRAN als nächstes ansehen?Verwendung von R mit Git und Packrat

Welche Dateien sollte ich mindestens in meinem Git Repo enthalten (z. B. packrat.lock)?

+0

Beantworten Sie diese Frage in der E-Mail-Liste: https://groups.google.com/d/msg/packrat-discuss/BDPQoHQOqcw/WASTdOEJZrYJ – Ben

Antwort

24

Sie können ein externes CRAN-ähnliches Repository mit den Quell-Tarballs der Pakete und deren Versionen, die Sie für Ihr Projekt verfügbar haben möchten, festlegen. Das Standardverhalten ist jedoch, dass Sie als nächstes auf CRAN schauen, wie Sie in Ihrer Frage angegeben haben. Schauen Sie sich die Datei packrat.lock an. Sie werden sehen, dass für jedes Paket, das Sie in packrat verwenden, eine Option mit dem Namen source: CRAN vorhanden ist (wenn Sie die Datei von CRAN heruntergeladen haben).

Wenn Sie eine lokal Paketquelldatei gespeichert, die folgenden der Inhalt der Aussperrung für die Verpackung ändern:

Package: FooPackage Source: source Version: 0.4-4 Hash: 44foo4036fb68e9foo9027048d28 SourcePath: /Users/MyName/Documents/code/myrepo/RNetica

ich ein wenig unklar, auf Ihre letzte Frage bin: What files should I include in my git repo as a minimum (e.g., packrat.lock)? Aber ich Ich werde das als a) Kombination der Dateien nehmen, die vorhanden sein sollten, damit Packrat läuft, und b) welche dieser Dateien dem git-repo übergeben werden sollten. Um die erste Frage zu beantworten, illustriere ich mit der Initialisierung von packrat auf einem bestehenden R-Projekt.

Wenn Sie packrat::init() laufen, zwei wichtige Dinge geschehen (unter anderem): 1. All packrat Gerüste, einschließlich Quellpakete usw. werden erstellt unter: PackageName/packrat/. 2. packrat/lib*/ wird zu Ihrer .gitignore-Datei hinzugefügt.

Also von diesem können wir sehen, dass nichts unter packrat/lib*/ nicht zu Ihrem git-Repo verpflichtet werden muss. Dies lässt die folgenden drei Dateien begangen werden:

  1. packrat/init.R
  2. packrat/packrat.lock
  3. packrat/packrat.opts

packrat.lock für die Zusammenarbeit mit anderen durch ein Versionskontrollsystem erforderlich ist; Es hilft, Ihre privaten Bibliotheken synchron zu halten. packrat.opts können Sie verschiedene projektspezifische Optionen für packrat angeben. Die Datei wird automatisch mit get_opts und set_opts generiert. Durch die Übergabe dieser Datei an den Git-Repo wird sichergestellt, dass alle von Ihnen angegebenen Optionen für alle Mitarbeiter beibehalten werden. Eine endgültige Datei, die dem Repo übergeben werden soll, lautet .Rprofile. Diese Datei weist R an, die private Paketbibliothek zu verwenden (wenn R aus dem Projektverzeichnis gestartet wird).

Je nach Ihren Anforderungen können Sie die Quell-Teer-Bälle in das Repository übertragen oder nicht. Wenn Sie nicht möchten, dass sie in Ihrem Git-Repo verfügbar sind, fügen Sie einfach packrat/src/ zum .gitignore hinzu. Dies bedeutet jedoch, dass jeder, der auf git-repo zugreift, keinen Zugriff auf den Quellcode des Pakets hat. Die Dateien werden von CRAN oder von überall dort heruntergeladen, wo die Quellzeile in der Datei packrat.lock diktiert.

Von Ihrer Frage, es klingt, als ob die packrat/src/ Ordner Inhalt zu Ihrem Repo Commit ist möglicherweise was Sie brauchen.