2012-11-17 3 views
9

저는 R이 처음인데 중형 프로젝트를 작성하기 시작했습니다. 응용 프로그램의 일부로 배포되지만 조직을 더 깔끔하게 만들기 위해 패키지를 만들기로 결정했습니다.R 패키지 개발에서 git을 사용하는 방법은 무엇입니까?

버전 제어를 사용할 때 DESCRIPTION 파일에 버전 및 날짜 필드가 필요하다는 사실을 어떻게 처리합니까? 모든 git commit으로 그 파일을 변경하고 싶지는 않습니다.

여기에 표준 Makefile이 있습니까?

더 나아가, 나는 이것을 어떻게하고 개발 중에 패키지를 사용할 수 있을지에 대해 완전히 명확하지 않습니다.

+2

repo의 모든 변경 사항에 대해 패키지 번호를 늘리고 싶지는 않을 것입니다. 현재이 기능을 수행 할 수있는 도구가별로 없으며 장점이 거의 없습니다. – hadley

+0

@hadley : 아니요. 그러나 지원 목적으로 사용자가 사용중인 버전을 찾을 수 있으면 좋을 것입니다. 또한 패키지 버전을 데이터 정리/처리 제품군에 메타 데이터로 저장하는 유스 케이스도 있습니다. (과학적 재현성을 위해).아마도 어떤 종류의 pre/post-build hook을 사용하여 DESCRIPTION과 작은 함수를 업데이트하여 git 개정을 파싱 할 수 있습니다. 빌드 후크는 https://stackoverflow.com/questions/32035151/executing-r- 패키지 설치 중 스크립트 # comment51982053_32035219,하지만 다른 곳에서는 세부 정보를 찾을 수 없습니다. – naught101

답변

5

당신은 당신이 구축하고 각 편집 한 후에 패키지를 설치할 필요가 없습니다 devtools 패키지를 사용하는 경우 - 다만 testthat 패키지에 이상적 (load_all()를 사용하고 작업이 사용자의 작업 세션에서 수행됩니다, 그래서 당신은 당신의 변경 사항을 테스트 할 수 있습니다).

은 내가 대한 RPub을 썼다 : http://www.rpubs.com/geospacedman/lazydevtools

당신은 여전히 ​​배포 패키지 소스 타르볼을 구축 할 수있는 옵션을 얻을.

git은 SVN의 $ id $와 같은 모든 커밋으로 파일 비트를 자동으로 업데이트하는 메커니즘을 권장하지 않습니다. 리누스는 자신은 '바보'와 '바보'라고 말했다 : 모든 커밋에 대한

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

4

R에 익숙하다면 제 생각에는 가장 진보 된 R-IDE 인 RStudio을 사용하는 것이 좋습니다. 그것은 package buildingversion control을 모두 제공합니다.

모든 git commit으로 그 파일을 변경하고 싶지는 않습니다. ... 더 나아가, 나는 이것을 어떻게하고 개발 중에 패키지를 사용할 수 있을지에 대해 완전히 명확하지 않다.

일반적으로 로컬 Git 저장소를 개발할 때 하나의 패키지가 설치되어 있어야합니다. 개발이 다음 패키지 릴리스의 상태에 도달하면 DESCRIPTION 파일의 날짜와 버전이 변경됩니다. 두 릴리스 사이에서 원하는만큼 GIT에 많은 단계를 수행하고 커밋하고 푸시 할 수 있습니다.

+0

레보를 복제 한 다른 사람은 어떨까요? DESCRIPTION은 실제 내용과 일치하지 않기 때문에 무효 인 패키지를 가지게됩니다 : DESCRIPTION의 버전은 코드의 버전이 아닙니다. – Andreas

+0

어쩌면 내가 자식 버전 번호로 버전을 업데이 트하는 어떤 종류의 커밋 - 후크를 찾고 있어요 – Andreas

+1

@Andreas 설명 파일의 버전에 대한 우려가 절대적으로 만들기 때문에 매우 혼란 스럽거나 매우 혼란 스럽습니다. 나 한테 감각이 없어. – joran

1

내가 DESCRIPTION을 변경하지 않는,하지만 난 날짜를 업데이트하고 내가 대시 이후 버전에서 현재 YYYYMMDD 날짜를 넣어 실제로 패키지를 만들 때마다. 야간에 있었던 밤을 추적하는 야간 건물의 일종입니다.

현재 여러 협력자의 요구에 의해 추진되는 다소 적극적인 개발 단계에 하나의 패키지가 있습니다. 마이너 버전의 날짜는 동료에게 "사용하는 버전이 언제입니까? sessionInfo()이 표시됩니다."라고 쉽게 물어볼 수 있으므로 편리합니다. "