2012-11-17 19 views
9

我是R的新手,已經開始編寫一箇中型項目。儘管它將作爲應用程序的一部分進行分發,但我決定從中製作一個軟件包以使組織更加整潔。如何在R包開發中使用git?

當我使用版本控制時,如何處理DESCRIPTION文件需要版本和日期字段的事實?我不想用每個git commit來更改該文件。

有沒有一個標準的Makefile的地方呢?

此外,我並不完全清楚如何做到這一點,並仍然能夠在開發過程中使用該軟件包。

+2

您可能不希望爲回購協議中的每個更改增加包編號 - 目前沒有好的工具可以執行此操作,而且它沒有什麼優勢。 – hadley

+0

@hadley:不,但能夠找到用戶正在使用的版本是出於支持目的,而且我們還有一個用例,它將包的版本作爲元數據存儲在數據清理/處理套件中(爲科學再現性)。也許某種pre/post-build掛鉤可以更新DESCRIPTION和一個小函數來解析出git修訂版。後綴構建掛鉤在https://stackoverflow.com/questions/32035151/executing-r-腳本在包安裝過程中#comment51982053_32035219,但我無法在其他地方找到任何細節。 – naught101

回答

5

如果使用devtools包你沒有建立和每個編輯之後安裝包 - 只需使用load_all()和工作在你的工作會議上完成的,因此您可以測試您的更改(理想與testthat包)。

我寫了RPub一下:http://www.rpubs.com/geospacedman/lazydevtools

你仍然可以構建一個軟件包的源碼包分配的選項。

請注意,git不會促進每次提交時自動更新文件位的機制,例如SVN中的$ id $ thing。 Linus本人說,這是「愚蠢」和「笨」:

http://www.gelato.unsw.edu.au/archives/git/0610/28891.html

4

如果您是R的新手,我推薦使用RStudio,這在我看來是最先進的R-IDE。它提供了:package building以及version control

我不想用每個git commit來更改該文件。 ... 此外,我不是,我怎麼會做這個,仍然能夠在開發使用包完全清楚。

那麼通常你就必須安裝與和開發當地的Git倉庫工作的一個包。當開發到達下一個包版本的狀態時,您將更改DESCRIPTION文件中的日期和版本。在兩個版本之間,您可以創建多個階段,根據需要提交併推送到您的GIT。

+0

那些克隆回購的人呢?他們將有一個無效的包,因爲DESCRIPTION不會與實際內容相符:DESCRIPTION中的版本不會是代碼的版本。 – Andreas

+0

也許我正在尋找某種commit-hook來更新git版本號爲 – Andreas

+1

@Andreas的版本要麼我很困惑,要麼你非常困惑,因爲你對DESCRIPTION文件中的版本的擔心使得絕對對我沒有意義。 – joran

1

我不會改變DESCRIPTION爲每次提交,但我更新日期,我把當前YYYYMMDD日期的版本破折號後每次我真正建立包裝。這是每天晚上的建築記錄。

目前我有一個包在一個相當積極的發展階段,是由幾個不同的同事的需求驅動。在次要版本的日期是方便,因爲我可以很容易地問同事「什麼日期是您使用的版本呢?sessionInfo()顯示它。」