20

私はしばらくの間 git を使用していましたが、最近 packrat を使い始めました。リポジトリを自己完結型にしたいのですが、同時に、利用可能な CRAN パッケージを含めたくありません。R が packrat を使用してプロジェクトで開かれると、プロジェクト ライブラリのパッケージを使用しようとするようです。利用できない場合は、プロジェクト ライブラリの src からインストールしようとします。それらが利用できない場合、そのコンピュータにインストールされているライブラリを調べます。コンピュータでライブラリが利用できない場合。次はCRANに目を向けますか?

最低限、git リポジトリに含めるべきファイルは何ですか (例: packrat.lock)?

4

1 に答える 1

40

プロジェクトで利用したいパッケージとそのバージョンのソース tarball を含む外部の CRAN のようなリポジトリを設定することを選択できます。ただし、デフォルトの動作は、質問で特定したように、次に CRAN に目を向けることです。packrat.lock ファイルを確認すると、packrat で使用する各パッケージに対して、というオプションがあることがわかりますsource: CRAN(CRAN からファイルをダウンロードした場合)。

ローカルに保存されたパッケージ ソース ファイルがある場合、そのパッケージのロックアウトの内容は次のように変更されます。

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

私はあなたの最後の質問について少し不明確です:What files should I include in my git repo as a minimum (e.g., packrat.lock)?しかし、私はこれを、a) packrat を実行するために存在する必要があるファイルの組み合わせ、および b) それらのファイルのどれを git-repo にコミットする必要があるかとして取り上げます。最初の質問に答えるために、既存の R プロジェクトで packrat を初期化する方法を説明します。

を実行するpackrat::init()と、(とりわけ) 2 つの重要なことが起こりますPackageName/packrat/。2. packrat/lib*/.gitignore ファイルに追加されます。

packrat/lib*/このことから、以下のものはすべてgit-repo にコミットする必要がないことがわかります。これにより、次の 3 つのファイルがコミットされます。

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

packrat.lockバージョン管理システムを通じて他のユーザーと共同作業するために必要です。プライベート ライブラリの同期を維持するのに役立ちます。packrat.optspackrat にさまざまなプロジェクト固有のオプションを指定できます。get_optsファイルは、 とを使用して自動的に生成されますset_opts。このファイルを git-repo にコミットすると、指定したオプションがすべての共同作業者に対して維持されます。リポジトリにコミットする最終的なファイルは.Rprofile. このファイルは、プライベート パッケージ ライブラリを使用するように R に指示します (R がプロジェクト ディレクトリから起動された場合)。

必要に応じて、ソース tar ボールをリポジトリにコミットするかどうかを選択できます。git-repo でそれらを利用したくない場合はpackrat/src/、.gitignore に追加するだけです。ただし、これは、git-repo にアクセスする人は誰でもパッケージのソース コードにアクセスできず、ファイルは CRAN からダウンロードされるか、packrat.lockファイル内のソース行が指示する場所からダウンロードされることを意味します。

あなたの質問から、フォルダーの内容をレポにコミットするpackrat/src/ことが必要なようです。

于 2016-08-15T03:45:01.650 に答える