SCM에 의존하지 않고 Python 패키지의 개발 버전을 처리하려면 어떻게 해야 합니까?

StackOverflow https://stackoverflow.com/questions/1705955

문제

Pinax 개발 중에 발생하는 한 가지 문제는 외부 앱의 개발 버전을 다루는 것입니다.버전 제어 시스템을 도입하지 않는 솔루션을 찾으려고 노력 중입니다.이유는 내 시스템에 가능한 모든 버전 제어 시스템을 설치하거나 기여자에게 강제로 설치하고 환경 생성 중에 발생할 수 있는 문제를 처리할 필요가 없기 때문입니다.

다음 상황을 생각해 보세요(Pinax의 작동 방식을 아는 것이 이해하는 데 도움이 될 것입니다).

우리는 Pinax의 새 버전 개발을 시작하고 있습니다.이전 버전에는 명시적인 버전이 설정된 pip 요구 사항 파일이 있습니다.해결하고 싶은 외부 앱에 버그가 발생했습니다.Pinax에서 버그 수정을 얻으려면 현재 프로세스는 우리가 앱을 제어할 수 있다는 가정 하에 앱의 마이너 릴리스를 만드는 것입니다.우리가 제어할 수 없는 앱은 앱 작성자의 릴리스 주기를 처리하거나 강제로 릴리스하도록 할 뿐입니다. ;-) 어떤 경우에는 버그 수정을 위해 지속적으로 마이너 릴리스를 만드는 것을 별로 좋아하지 않습니다. 앱의 새로운 기능도 개발하고 있습니다.물론 이전 버전을 분기하는 것이 우리가 하는 일이고 필요에 따라 백포트를 수행하는 것입니다.

이에 대한 몇 가지 생각을 듣고 싶습니다.

도움이 되었습니까?

해결책 2

나는 묻기 전에 고려한 해결책은 pinax pypi를 세우고 개발을 방출하는 것이 었습니다. 우리는 Chishop의 사례를 올릴 수있었습니다. 우리는 이미 PIP의 -Find-Links를 사용하여 pypi.pinaxproject.com을 포인트하여 자신을 해제해야했던 패키지를 사용하고 있습니다.

다른 팁

"==dev" 버전 지정자를 사용하여 이 문제를 처리할 수 있습니까?PyPI의 배포 페이지에 현재 개발 버전의 .tgz에 대한 링크가 포함되어 있고(예: github 및 bitbucket 모두 자동으로 제공) 링크에 "#egg=project_name-dev"를 추가하면 easy_install과 pip 모두 해당 링크를 사용합니다. .tgz ==dev가 요청된 경우.

이렇게 하면 "최근 팁/헤드"보다 더 구체적인 항목을 고정할 수는 없지만 많은 경우에는 그것만으로도 충분할까요?

대부분의 오픈 소스 유통 업체 (Debians, Ubuntu 's, MacPorts 등)는 일종의 패치 관리 메커니즘을 사용합니다. 다음과 같은 것 : 각 패키지의 기본 소스 코드를 TAR BALL 또는 SCM 스냅 샷으로 releption으로 가져옵니다. 그런 다음 패치 관리자를 사용하여 필요한 수정 사항을 관리하십시오. 이불 또는 머큐리리의 줄. 그런 다음 각 외부 패키지를 모든 적용 패치로 일관된 형식으로 묶습니다. 또는 기본 패키지에 대한 URL 및 개별 패치에 URL을 사용하고 설치 중에 적용하도록합니다. 그것은 본질적으로 무엇입니다 맥 포트 하다.

편집 : 한 걸음 더 나아가면 모든 외부 패키지에서 패치 세트를 제어하고 만들 수 있습니다. 저것 단위로 제공됩니다. 그것은 수은 대기열로하기가 매우 쉽습니다. 그런 다음 하나의 SCM 시스템을 사용하여 하나의 패치 세트를 게시하는 데 문제를 단순화했으며 패치는 위와 같이 로컬로 적용되거나 개발자가 기본 릴리스 패키지의 사본을 끌어 당기고 적용 할 수 있습니다.

편집하다:귀하의 질문을 올바르게 읽고 있는지 확신할 수 없으므로 다음 내용이 귀하의 질문에 직접적으로 답변하지 못할 수도 있습니다.

제가 고려했지만 테스트하지 않은 것은 pip의 동결 번들 기능을 사용하는 것입니다.아마도 그것을 사용하고 Pinax와 함께 번들을 배포하면 효과가 있을까요?내 유일한 관심사는 다양한 OS가 어떻게 처리되는지입니다.예를 들어, 저는 Windows에서 pip를 사용한 적이 없기 때문에 번들이 Windows에서 어떻게 상호 작용하는지 알 수 없습니다.

제가 시도하고 싶은 전체 아이디어는 번들 관리를 제어하는 ​​포장 스크립트를 만들어 사용자가 최신 버전으로 쉽게 업그레이드할 수 있도록 하는 것입니다.하지만 이를 위해서는 약간의 비계가 필요합니다.

또 다른 옵션은 제어하지 않는 앱의 미러를 일관된 VC에 보관한 다음 미러링된 버전을 배포하는 것입니다.이렇게 하면 "모든 사람"이 다양한 프로그램을 설치할 필요가 없어집니다.

그 외에는 여러분이 하고 있는 일이 유일한 실제 해결책인 것 같습니다. 제가 찾은 번거로움 없는 방법은 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top