-
Notifications
You must be signed in to change notification settings - Fork 23
Development Policy
- 本レポジトリを直接cloneするか,自分のところにfolkしてからcloneする(下記、「frasyrのgitを通じた開発への貢献方法」に詳細があります)
- 自分の環境下でコードを修正
- インポートするパッケージの追加などは,自分の関数の近くに @import パッケージ名,または@importFrom パッケージ名 関数名として定義しておくと,checkのときにroxygen2が自動的にNAMESPACEを置き換えてくれるので,NAMESPACEは直接いじらない
- パッケージをビルド,テスト,インストール
devtools::load_all()
- 2,3を繰り返してコードの修正を完了させる
- テストコードを走らせて確認
devtools::test()
- 仕上げ(vignetteも作り直す)
devtools::check()
- 修正した一連の変更を 個人の名前のブランチichimomoに push する
- Githubのウェブ上で,ichimomoからdevにpull request => merge
- 安定版が完成した段階でmasterも変更
gitを通じてfrasyrの開発に貢献する方法について記します。2019/12/3現在、frasyrはichimomoの下にあります。ichimomo/frasyr(frasyrリポジトリ)には複数のブランチが存在し、パッケージとして配布されるのはgitのmasterブランチで、開発者は主としてdevブランチを利用して開発を進めます。各ブランチの運営についてはここを参照のこと。
gitでfrasyrの開発に加わる場合、全ブランチ情報を手元のPCにコピーしてくる必要があり、以下の方法を挙げます。
- ichimomo/frasyrリポジトリを直接ダウンロード(ただし、ブランチはmasterからdevへ変更)する方法。
- ichimomo/frasyrリポジトリを手元のPCにcloneする方法。
- 自分のgitアカウントにichimomo/frasyrをForkしてから手元のPCにcloneする方法。
ここではichimomo/frasyrをダウンロードする方法を説明します。まず、開発はmasterブランチではなくdevブランチで行うので、githubサイトのブランチをmasterからdevに切り替えます(左上のBranch:xxxをクリックして切り替えてください)。 ブランチがdevに切り替わっていることを確認したら右の「Clone or download」をクリックし、Download ZIPなどでファイルをダウンロードします。ZIPを解凍し、Rスクリプトを開いて開発を進めます。
開発に区切りがついたら、改定したファイルをアップロードします。githubのウェブサイトを通じてアップロードできます。このときもブランチがdevになっているか、確認してください。ブランチがdevであると確認できたら「Upload files」を選び、編集したファイルをここにドラッグ&ドロップします。このとき、どんな変更を行ったかを「Commit changes」に記述してください。 ファイルをアップロードする際に、既存のファイル(他の人がすでに変更してアップロードしたもの)と競合する(conflictがある)場合があります。その場合は競合箇所を確認し、これらを解消してからpull requestします。
ここではichimomo/frasyrをcloneする方法を説明します。手元のPCにgitをインストールする必要があります。gitのインストールを先に行います。gitをインストールの上、GUIで操作することを仮定します。このページにあるように、gitのリポジトリを配置するディレクトリに移動しichimomo/frasyrのgithubサイトから
git clone -b dev https://github.com/ichimomo/frasyr.git
を行い、devブランチのファイルを手元のPCに持ってきます。(多くの場合、 -b devのオプションなしでmasterブランチを手元にコピーし、手元のマシンで新たなブランチを作成して開発者各々が開発をしますが、frasyrではmasterブランチは配布版を置いているので、開発の最前線はdevブランチになります。)さらにブランチを作成します(zzzとします)。
git branch zzz
作ったzzzブランチに移動します。
git checkout zzz
自分がどのブランチにいるのか確認してください。
git branch
アスタリスクのついているブランチがいま作業しているブランチになります。このうえで手元のPCでのエディター(Rstudio含)を使い開発を行います。開発に区切りがついたら、改定したファイル(たとえば、example.txt)をaddしてcommitします。
git add example.txt
git commit -m "example.txtファイルを作成しました。"
さらにichimomo/frasyrにpushしてgithubサイトにアップロードしますが、その作業をする際に
git push --set-upstream origin zzz
とすると、ichimomo/frasyrにzzzブランチが作られ、ファイルが送られます。ichimomo/frasyrリポジトリはoriginという扱いになります。以下のログが表示されるかを確認します。
To https://github.com/ichimomo/frasyr.git
xxxxxx..xxxxxy zzz -> zzz
「--set-upstream」のオプションは初回のみです。2回目以降はichimomo/frasyrリポジトリに新たな変更がある場合、手元のファイルに統合する必要があります。そのためにfetchします。
git fetch origin dev
手元にデータを引っ張ってきたので、リモートにあった最新版の開発経過を取り込みます。ここでdevを省略してgit fetch originのみとすると、ichimomo/frasyrリポジトリにある全てのブランチを引っ張ってきます。
git merge origin/dev
この状態でコンフリクトなどがないか確認し、開発を進めます。zzzブランチで開発をすれば、すでにzzzブランチはichimomo/frasyrリポジトリに存在するので
git push origin
だけでzzzブランチへの変更が送られます。 githubサイトで「Compare & pull request」をクリックし、compare:zzzからbase:devに対してpull requestを出します。(デフォルトでbase:masterになっていることに注意してください。)
ここではichimomo/frasyrを自分のgitアカウントにForkしてからcloneする方法について説明します(概念)。自分のgithubアカウントを所有していることが前提です。ichimomo/frasyrのgithubサイトの右上にあるForkをクリックします。 すると、自分のgithubサイトにichimomo/frasyrがコピーされます。 手元のPCにはForkされた自分のgithubをcloneしてファイルをコピーします。
git clone https://github.com/【自分のユーザーアカウント】/frasyr.git
このままではcloneしたのは自分のアカウントにあるmasterブランチになっています。(これはもう使いません。)
(初回だけ) Fork元のichimomo/frasyrにあるdevを含む様々なブランチの情報を手元のPCに持ってくるためには、Fork元の情報があることを明示します。
git remote add FORK-MOTO https://github.com/ichimomo/frasyr.git
git fetch --all
(Issueを見て、取り組む課題を決める)
git checkout -b FORK-MOTO/dev issue123
このうえで手元のPCでのエディター(Rstudio含)を使い開発を行います。開発に区切りがついたら、改定したファイルをaddしてcommitします。さらに【ユーザーアカウント】/frasyrにpushする際に
git push --set-upstream origin issue123 (Only first time) とすると、【自分のユーザーアカウント】/frasyrにissue123ブランチが作られ、ファイルが送られます。 【ユーザーアカウント】/frasyrリポジトリがoriginという扱いになります。以下のログが表示されるかを確認します。 To https://github.com/【ユーザーアカウント】/frasyr.git
xxxxxx..xxxxxy issue123 -> 123
2回目以降は、git push だけでOKです
zzzブランチで開発をすれば、上記の通りです。ただし、pushする先はorigin、つまり【ユーザーアカウント】/frasyrリポジトリになります。
開発結果を共有するためには、自分のユーザアカウントのgithubサイトからPull requestをichimomo/frasyrに出します。ただし、デフォルトではichimomo/frasyrのmasterブランチにプルリクしてしまうので、request先にdevブランチを指定してください。
frasyr_tool群の全体説明はこちら