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


10

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

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

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

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



멋진 슬라이드 쇼였습니다. 공유에 대한 기본 감사를 이해하는 데 도움이되었다고 생각합니다.

1
이것은 실제로 두 가지 질문이며 둘 다 중복되었을 수 있습니다. stackoverflow.com/questions/2303136/…stackoverflow.com/questions/3859/…
실바 나르

2
"기술 부족"은 무언가를 오픈 소스로 만드는 끔찍한 이유처럼 들립니다. 훌륭한 아이디어가 있지만 기술력이 부족한 경우 가능합니다. 기술적으로 숙련 된 파트너를 찾아서 첫 번째 코드를 만들 준비를하고 공개 소스로 가고 싶어 할 때까지 공개 소스로 가지 않을 것입니다.
tripleee

Tripleee 당신은 내가 파트너가 될 사람을 찾을 수있는 네트워크 나 그 성격의 것을 제안 할 수 있습니까?
Nathan

답변:


7

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

오픈 소스 소프트웨어 개발의 핵심은 소스 코드를 공유하는 것입니다. 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 이후 개선 되었으나 동일하지 않음)
  • 커밋 및 게시가 분리되어 있으므로 기능을 방해하지 않고 작업하고 작업이 완료되면 작업을 게시 할 수 있습니다
  • 제품 디렉토리의 상태를 전체적으로 추적합니다.
  • 원격 저장소를 복제 할 때 전체 버전 기록의 전체 사본을 얻습니다.
  • 암호로 보안 된 개정 번호로, 누군가 서버에서 침입하더라도 개정 내역을 변경하지 않고 코드를 넣을 수 없음

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

9

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

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

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


6

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

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


Mercurial은 훌륭한 시스템으로 몇 분만 사용하면 서브 버전에서 벗어날 수있었습니다.
Jim In Texas

3

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

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


2

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

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

[편집하다]

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


1
왜 svn이 가장 쉽다고 말합니까? 이 진술을 정당화하십시오.

1
@Richard : 나는 그가 기본 사용법을 설정하고 사용하는 것이 조금 더 쉽다는 것을 의미한다고 생각합니다. 적어도 나는 그 동의에 동의합니다. 도서관에서 GPL을 사용해서는 안된다는 생각에 동의하지 않습니다. 그것은 실제로 정치적 입장입니다.
Kheldar

라이브러리 사용에 특정 제한을 두려면 라이브러리에 GPL을 사용하십시오. 더 적은 제한을 적용하려면 LGPL을 사용하십시오.
키이스 톰슨

0

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

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

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


0

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

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

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


0

코드 또는 프로젝트를 오픈 소스로 만들면 누구나 원하는대로 코드를 가져 와서 수정할 수 있습니다. 사용하려는 라이센스 유형에 따라 다르지만 일반적으로 오픈 소스 란 누구나 소스 코드를 다운로드하여 수정하고 원하는대로 사용할 수 있음을 의미합니다.

어쨌든이 코드는 다른 사람들이 접근 할 수 있어야합니다.

코드를 GitHub와 같은 공용 온라인 저장소로 가져가는 것이 가장 좋습니다. 먼저, 이제 코드를 일반인이 액세스 할 수 있습니다. 그런 다음 이러한 서비스는 버전 제어도 제공하므로 코드가 프로젝트 구성됩니다. 자신과 다른 사람들이 변경 한 내용을 추적 할 수 있습니다. 또한 프로젝트를 다른 프로젝트로 분기 (분리) 할 수 있으므로 다른 사람들이 작성한 코드로 다른 모든 버전을 추적 할 수 있습니다.

또한 코드가 안전한 곳에 저장되므로 PC의 하드 디스크 결함으로 인해 코드가 손실 될 염려가 없습니다. 코드를 온라인으로 사용하여 어디서나 작업 할 수 있으므로 어디서든 작업 할 수 있습니다.

그런 다음 코드를 세상에 과시 할 시간을 결정한 경우, 온라인 프로젝트 저장소로 링크를 전송하면됩니다. 사람들이 익숙한 기술이기 때문에 모든 사람이 알고 있기 때문에 다운로드, 메시지 게시, 다른 버전 생성 등을 이해하는 것이 더 쉽습니다.

그것은 일을하는 일반적인 표준, 일반적인 관행과 같습니다.

오픈 소스를 자세히 설명하는 데 도움이 될만한 링크들 :


-6

버전 관리 시스템에 대해 가장 많이 사용하고 가장 최근의 대안 인 "Git"을 고수해야한다고 말합니다. 머큐리얼은 덜 인기가 있으며 SVN은 오래되고 느리고 중앙 집중식입니다. GIT를 사용하면 현대적이고 대중적인 버전 제어 시스템의 이점을 누릴 수 있습니다. 실제로 잃을 것이 없습니다.

출처 (DVCS의 인기와 관련하여) :

/programming/tagged/git ~ 10k 질문 /programming/tagged/mercurial ~ 3k 질문

http://www.googlefight.com/index.php?lang=en_GB&word1=git&word2=mercurial

11700000 결과 vs

1580000 결과

라이센스 관련 : GLP, MIT, LGPL, BSD와 같은 가장 일반적인 라이센스를보고 프로젝트에 더 적합한 것을 선택해야합니다.


7
Mercurial은 독점적이지 않습니다. Git과 동일한 오픈 소스입니다!
Christian Specht

4
팬 보이는 부분적으로 잘못된 주장으로 대답합니다.
Oben Sonne

1
"가장 많이 사용 된"-해당 정보 출처에 대한 참조를 제공하십시오.
sylvanaar

죄송합니다.. 그것은 단지 제 생각입니다. Git이 Mercurial보다 더 많이 사용되는 것 같습니다. SVN이 오래되고 느리고 중앙 집중적이라는 것을 알고 있습니다. fanboy-answer. git hub는 git을 사용하고, Linux 커널은 git을 사용하고, 내 부서의 모든 프로젝트는 git을 사용합니다.
Pedro Rolo

2
아마도 Git에 관한 많은 질문은 사용하기가 더 어렵다는 것을 보여줍니다. 몇몇 사람들은 웹 개발 프레임 워크가 같은 점이 제기 된 가장 '인기있는'요소를 조사 할 때 비슷한 데이터를 사용했습니다 (부정확도에 대한 언급).
Tim Post
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.