오픈 소스 프로젝트에서 버전 관리를 시작하는 가장 좋은 방법은 무엇입니까? 코드를 확인하고 프로젝트를

크기와 기술 부족으로 인해 프로젝트 오픈 소스를 가져갈 것을 제안 했으므로 Google 코드를 확인하고 프로젝트를 시작했으며 이제 프로젝트에 Git, Mercurial 또는 Subversion이 필요한지 묻는 메시지가 표시됩니다 코드 호스팅.

코드 호스팅이 무엇인지조차 알지 못하며 검색으로 인해이 모든 것들 사이의 논쟁과 더 혼란스러워졌으며 Google 코드에서 원하는 라이센스 유형을 묻기 때문에 상황이 더욱 악화되었습니다.

나는 오픈 소스가 실제로 무엇을 의미하는지 잘 모르고 있다고 생각합니다. 누군가 가이 모든 것에 대해 빠른 평신도의 치트 시트를 만들 수 있습니까? 매우 감사.

편집 이 세 가지 버전의 코드 호스팅에 대해 많은 반응이 있었지만 실제 질문을 전달하지 못했다고 생각합니다. 기본적 으로이 오픈 소스 기능이 어떻게 작동하는지 전혀 모르겠습니다. ? 그리고 그것은 내가 현재 호스팅에서 사이트를 가져와야한다는 것을 의미합니까, 아니면 완전히 다른 유형의 호스팅입니까? 사이트를 오픈 소스로 만들면 어떤 권한이 있으며 어떤 권한을 부여해야합니까? 어떻게 작동합니까, 사람들이 무료로 나와 코드를 던지나요? 아마도 이것들은 어리석은 질문 일 것입니다. 그렇다면 어리석은 대답이 필요하다고 생각합니다. 코드 공유 개념을 제외하고는 오픈 소스가 무엇인지 진지하게 생각하지 않습니다 …



답변

왜 이런 식으로 코드를 호스팅합니까?

오픈 소스 소프트웨어 개발의 핵심은 소스 코드를 공유하는 것입니다. tar / zip 파일을 웹이나 ftp 서버에 두는 것과 같이 여러 가지 방법이 있습니다. Google 코드 (또는 sourceforge.net, gitorious.org, bitbucket.org 등)와 같은 서비스는 이러한 목적으로 자체 서버를 실행할 필요가 없습니다.

그리고 그것은 내가 현재 호스팅에서 사이트를 가져와야한다는 것을 의미합니까, 아니면 완전히 다른 유형의 호스팅입니까?

이러한 서비스는 범용 웹 호스트는 아니지만 매우 전문적인 서비스를 실행합니다. 제품의 홈페이지가 아니라 개발자 대시 보드가 아닙니다.

구글 코드를 사용하면

  • 위키
  • 버그 추적기
  • 일반 파일 다운로드 공간
  • 버전 관리 서버

물론 일반 웹 서버에서 이러한 소프트웨어를 설정할 수 있습니다 (버전 관리는 까다로울 수 있지만 세부 사항에 따라 크게 다름). 개발 호스팅 업체를 사용하면 얻을 수있는 주요 이점은주의를 기울일 필요가 없다는 것입니다 자신의 시스템. 주요 단점은 서버에서 사용되는 소프트웨어를 제어 할 수 없으며 해당 호스트에서 사용 가능한 소프트웨어를 사용해야한다는 것입니다. 또한 서비스가 중단되면 (Google은 실패하지 않음) 현재 호스트에서 다른 호스트 또는 자신의 서버로 데이터를 가져올 수있는 경우 (백업을 생각할 때) 어떤 일이 발생하는지 고려해야합니다.

내 사이트를 오픈 소스로 만들면 어떻게 되나요?

거주 국가의 법률에 따라 다르므로 어려운 질문입니다.

어떤 권리를 주어야합니까?

이것은 제품에 부여한 라이센스에 따라 다릅니다. 사용자가 기본적으로 코드로 아무것도 할 수없는 독점적 인 오픈 소스 (PGP 생각)에서 나올 수 있습니다. 다른 한편으로는 모든 사람이 원하는 것을 할 수있는 공개 도메인입니다.

어떻게 작동합니까, 사람들이 무료로 나와 코드를 던지나요?

다른 개발자를 유치하기 위해서는 제품에 충분한 인기가 필요하기 때문에 이것은 일어날 가능성이 거의 없습니다.

[…] 이제 프로젝트에 Git, Mercurial 또는 Subversion 코드 호스팅을 원하는지 묻는 메시지가 표시됩니다.

이들은 세 가지 버전 제어 시스템으로 Subversion은 중앙 집중식 시스템이며 Git과 Mercurial은 분산되어 있습니다.

어느 쪽을 사용해야하는지에 대한 종교적 전쟁이 있지만, 요점은 하나를 사용하는 것입니다. 자세한 내용은 http://martinfowler.com/bliki/VersionControlTools.html 을 참조하십시오.

Subversion을 선택하는시기 :

  • 쉽게 병합 할 수없는 이진 파일이 있으며 하위 버전을 지원하는 잠금-> 수정-> 커밋-> 잠금 해제 워크 플로가 필요 ¹
  • 디렉토리 구조의 일부만 체크 아웃해야합니다.

¹ 수은을위한 자물쇠 연장 장치가 있지만 그것에 대한 경험이 없으며 사용 가능 여부를 말할 수 없습니다.

이전 기능이 필요하지 않은 경우 Mercurial 또는 Git을 사용하는 것이 좋습니다. 둘 다 Subversion에 비해 다음과 같은 장점이 있습니다.

  • 빨리 (그리고 빨리 나는 정말 빠르다 )
  • 손쉬운 분기 및 병합 (Subversion> = 1.5 이후 개선 되었으나 동일하지 않음)
  • 커밋 및 게시가 분리되어 있으므로 기능을 방해하지 않고 작업하고 작업이 완료되면 작업을 게시 할 수 있습니다
  • 제품 디렉토리의 상태를 전체적으로 추적합니다.
  • 원격 저장소를 복제 할 때 전체 버전 기록의 전체 사본을 얻습니다.
  • 암호로 보안 된 개정 번호로, 누군가 서버에서 침입하더라도 개정 내역을 변경하지 않고 코드를 넣을 수 없음

    • 그러나 아무도 이러한 개정을 확인하지 않으므로이 기능은 실제로 효과적이지 않습니다.

답변

코드 호스팅은 코드를 호스팅 (또는 보관) 할 수있는 곳입니다.

Git, Mercurial 및 Subversion은 모두 코드 기록을 관리하는 데 사용하는 소스 제어 도구입니다. Git과 Mercurial은 분산 시스템 인 반면 Subversion은보다 전통적인 서버 기반 설정입니다.

Wikipedia 또는 그와 비슷한 것들을 살펴보고 가장 호소력있는 부분을보십시오. 개인적으로 우리는 Mercurial을 사용하며 매우 잘 작동합니다.


답변

Joel Spolsky 는 Hg (Mercurial)에 대한 훌륭한 자습서를 작성 했으며 소개 섹션에서는 Mercurial로 업그레이드하는 이유를 포함하여 Subversion에 대해 설명합니다. 읽어 보면 머큐리얼과 DVCS에 대한 전반적인 이해가 도움이되었습니다.

그리고 호스팅 준비가되면 Google 코드, BitBucket , Github ( 이 우수한 확장 프로그램 의 도움으로 ) 또는 기타를 사용할 수 있습니다.


답변

분산 제어로 인해 관리하기 쉬운 git을 사용합니다. Hg는이 특정 목적에도 적합하지만 결코 사용하지 않은 조언을 줄 수는 없습니다. SVN은 중앙 집중식 시스템이므로 실용성은 떨어지지 만 약간 더 단순 할 수 있습니다.

오픈 소스는 기본적으로 모든 사람이 자신의 작업을 사용하고 그 위에 구축 할 수있는 능력을 부여한다는 것을 의미합니다. GPL은 사용자가 자신의 추가 작업을 오픈 소스로 만들어야한다는 것을 의미합니다. LGPL은 예를 들어 그렇지 않은 것을 의미합니다.


답변

Subversion은 VCS이므로 가장 쉬운 옵션입니다. Git과 Mercurial은 DVCS 시스템입니다. 그들은 더 현대적이고 강력하지만 이해하기 까다 롭습니다. TortoiseSVN 또는 TortoiseHG (Mercural aka HG의 경우)와 같은 프런트 엔드를 사용하면 실제로 도움이됩니다.

소프트웨어가 독립형 프로그램 인 경우 GPL을 사용하거나 BSD 라이센스로 실제로 열 수 있습니다. 프로젝트가 다른 사람이 LGPL 또는 BSD를 사용하여 연결하는 라이브러리 인 경우; 그러나 GPL을 사용하지 마십시오.

[편집하다]

소프트웨어의 오픈 소싱에 대한 원래의 동기 부여와 관련하여 : 불행히도 소프트웨어를 오픈 소스로 만든다고해서 재능있는 무료 노동력이 유입되는 것은 아닙니다. 수십만 개의 오픈 소스 프로젝트가 있습니다. 그들 중 소수만이 활동에 기여하는 회원을 보유하고 있습니다. 이러한 프로젝트의 성공 여부는 비즈니스 성공 및 실패 이유에 따라 다릅니다. 좋은 프로그래머가되고 좋은 소프트웨어를 만들고 싶다면 StackOverflow와 같은 사이트에서 배우고 코드를 작성하고 다른 사람들과 의사 소통하는 데 많은 시간을 소비해야합니다.


답변

여기에있는 대부분의 사람들이 어떻게 대답하고 있는지 , 아무도 당신의 질문 에 그 이유대해 아무도 대답 하지 않은 것 같습니다 .

제가 경험 한 첫 번째 오픈 소스 프로젝트 중 하나는 멋진 Fractint 프로젝트였습니다.이 프로젝트는 Stone Stone Soup Group 이 개발 한 것으로 오래된 Stone Soup 민속 이야기 에서 영감을 받았습니다 .

나에게 이것은 Stallman rant 나 원래의 GNU 선언 보다 더 나은 오픈 소스의 정신을 요약합니다 . Fractint가 특정 코드의 요리 냄비 아래에서 불이 붙은 지 23 년이 지난 지금도 Fractint가 계속 개발되고 있다는 것은 그 커뮤니티의 강점을 보여주는 증거 입니다.


답변

오픈 소스 란 누구나 코드를 읽고, 복사하고, 수정하고 배포 할 수 있음을 의미합니다. 계속 진행하기 전에 이것의 의미를 확실히 이해해야합니다. 아마도 개념을 파악할 때까지 책을 읽거나 주제 및 / 또는 http://opensource.org/ 에서 위키 백과 기사를 찾아 보아야합니다.

(O’Reilly의 책 오픈 소스 http://oreilly.com/openbook/opensources/book/index.html 은 도움이되지만 원하는 내용이 아닐 수도 있습니다.)

사용할 소스 코드 제어 시스템은 전적으로 이차적으로 중요합니다. 웹 페이지에 코드를 복사 / 붙여 넣을 수 있습니다. 그러나 버전 관리는 중요하며 개발자가 기여할 수있는 기준을 낮추는 좋은 수단입니다. Google 코드에서 제공하는 모든 옵션은 괜찮습니다. 당신이 좋아하는 사람과 함께 가거나 기여자에게 그들이 사용하고 싶은 것을 물어볼 수있을 때까지 질문을 연기하십시오.