단일 개발자를위한 소스 제어 시스템
소규모 팀 (한 명의 개발자)에게 권장되는 소스 제어 시스템은 무엇입니까?
가격은 중요하지 않습니다. 고객은 비용을 지불합니다 :-)
저는 C ++에서 VS 2008을 사용하고 나중에 C # 및 WPF를 사용하여 Vista32에서 작업하고 있습니다. 이를 위해 여분의 (물리적) 서버를 설정하는 것은 나에게 지나친 것처럼 보입니다.
의견이 있으십니까?
나는 Subversion을 사용할 것입니다 (사실 나는 그것을 사용합니다) [ update : Jul 2014-I use Git-see end of the answer]. SVN은 다음과 같습니다.
- 비어 있는,
- 충분합니다 (아래 단점 참조).
- 단순한,
- Windows (및 Linux도)에서 잘 작동합니다.
- 많은 사람들이 사용하므로 쉽게 도움을받을 수 있습니다.
- 십오 일의 대부분은 즉과 통합 할 수 있습니다 비주얼 스튜디오 (즉, ankhsvn 또는 VisualSVN - 대한 추가 정보 또는) 이클립스 (즉, Subclipse에 - 여기 누군가가 그것에 대해 물었다).
나는 것이 강하게 소스 제어 서버에 별도의 시스템을 권장합니다. 기껏 해야 클라우드 어딘가에 . 장점 :
- 개발 상자가 죽어도 소스 제어 리포지토리를 잃지 않습니다.
- 하나 이상의 상자를 유지 관리하는 것에 대해 걱정할 필요가 없습니다.
다음 은 다양한 운영 체제 용 SVN (클라이언트 및 서버) 패키지에 대한 링크입니다.
SVN의 단점
약 5 년 동안 Windows 시스템에서 SVN을 사용하고 있으며 SVN에는 몇 가지 단점이 있습니다.
큰 저장소에서는 느립니다.
SVN (또는 클라이언트-TortoiseSVN)에는 한 가지 큰 단점이 있습니다. SSD 드라이브 가 없으면 대용량 (수천 개의 파일) 저장소에서 끔찍하게 느립니다 (업데이트 또는 커밋하는 동안) .
병합이 어려울 수 있습니다.
많은 사람들이 SVN과의 병합이 얼마나 어려운지 불평합니다.
나는 약 4 년 동안 (CVS에서 약 2 년을 포함하여 끔찍했지만 가능했습니다) SVN과 약 2 년 동안 병합합니다.
그리고 개인적으로 나는 그것이 어렵지 않다고 생각합니다. 반면에-CVS에서 브랜치를 병합 한 후에는 어떤 병합도 쉽습니다. :).
나는 일주일에 한 번 큰 저장소 (사실 두 저장소)를 병합하고 거의 해결하기 어려운 충돌이 발생하지 않습니다 (대부분의 충돌은 내가 사용하는 diff 소프트웨어로 자동으로 해결됩니다 ).
그러나 몇 명의 개발자의 프로젝트의 경우 몇 가지 간단한 규칙을 유지하면 병합이 전혀 문제가되지 않습니다.
- 자주 변경 사항을 병합하고
- 동시에 다양한 지점에서 활발한 개발을 피하십시오.
2011 년 7 월에 추가됨
많은 개발자 들이 Git 또는 Mercurial 과 같은 분산 버전 제어를 권장했습니다 .
에서 하나의 개발자 관점 SVN을 통해 DVCS의 몇 가지 중요한 이점이있다 :
- DVCS는 더 빠를 수 있습니다.
- 중앙 저장소에 액세스하지 않고도 로컬 저장소에 커밋 할 수 있습니다.
- DVCS는 (누군가가 당신의 학습 비용을 지불한다면) 사용 / 배우기에 화려하고 화려합니다.
그리고 단일 개발자의 경우 병합이 문제라고 생각하지 않습니다.
Joel Spolsky는 읽을 가치가있는 Mercurial에 대한 튜토리얼 을 작성했습니다.
따라서 DVCS의 많은 장점에도 불구하고 병합이나 속도가 문제가되지 않으면 SVN을 계속 사용합니다.
또는에 따라 의욕, 노력 이 와 이 SO 질문, 더 나은 Windows에서 (2011 년 7 월) 지원됩니다.
2014 년 7 월에 추가됨
약 1 년 동안 나는 애완 동물 프로젝트 (예 : 오일러 문제 해결)에 Git (주로 Git Bash)을 사용하고 각 오일러 문제에 대한 로컬 브랜치는 DVCS의 장점으로 설명 된 것과 똑같이 정말 멋진 기능입니다.
오늘날 Windows의 Git 도구는 2 년 이상 전보다 훨씬 낫습니다. 원격 저장소 (예 : GitHub 또는 ProjectLocker 등)를 사용하여 추가 노력 / 돈없이 워크 스테이션에서 프로젝트 사본을 보관할 수 있습니다.
그러나 저는 GUI 클라이언트를 사용하여 diff를 확인하고 (때로는 커밋 할 파일을 선택하는 경우도 있음) 명령 줄을 두려워하지 않는 것이 좋습니다. 정말 좋습니다.
그래서 오늘부터 저는 Git으로 갈 것입니다.
Mercurial도 추천합니다. 명령 세트는 Subversion에서 찾은 것과 매우 유사하므로 학습 곡선이 그렇게 가파르 지 않습니다. 앞서 언급했듯이 로컬로 실행되도록 설계되었지만 컴퓨터간에 변경 사항을 쉽게 공유 / 병합하거나 백업을 위해 원격 서버로 푸시하는 것도 쉽습니다.
TortoiseHG 와 같은 훌륭한 도구를 제공 하며 NetBeans 및 Eclipse에 대한 훌륭한 플러그인이 있습니다. 또한 Python으로 작성된 Win32에서 기본적으로 실행됩니다.
서버를 직접 설정하지 않으려면 (예 : 백업용) 무료 호스팅 제공 업체를 이용할 수 있습니다. Mercurial Wiki 에 포괄적 인 목록 이 있습니다.
나는 확실히 자식을 추천합니다
크고 작은 팀 모두에 적합합니다. 유일한 단점은 기본 창 지원이 불량하다는 것입니다. Cygwin에서 잘 작동하지만. 기본 Windows 포트 도 있습니다 .
몇 가지 이점 :
- 비선형 작업 흐름에 대한 탁월한 지원. 그것의 분기와 병합은 예를 들어 Subversion보다 훨씬 낫습니다.
- 저장소 탐색을위한 좋은 도구
- 대규모 프로젝트를 잘 처리합니다.
- 저장소의 암호화 서명을 변경하지 않고 기록을 수정할 수 없습니다.
- 모 놀리식이 아닌 디자인으로 스크립트 작성이 쉽습니다.
어떤 사람들은 학습 곡선이 가파르다는 것을 알게됩니다. 그러나 일단 이해하면 원하는 거의 모든 것을 할 수 있습니다.
Subversion 및 tortoiseSVN으로 이동하면 서버에서 설정할 필요가 없습니다.
- 비용은 0입니다
- Subversion 문서는 훌륭하고 읽기 재미 있습니다.
- tortoiseSVN은 매우 편리한 클라이언트입니다.
Sourcegear의 Vault 는 훌륭한 옵션이며 SqlServer에서 실행되며 수년 동안 사용되어 왔습니다. VSS (Visual Source Safe) 버전을 사용하지 않습니다.
Subversion은 진입 장벽이 매우 낮습니다.
TortoiseSVN 은 무료 클라이언트이며 오른쪽 마우스 클릭 메뉴에서 탐색기에 통합됩니다.
저장소는 PC 또는 네트워크 드라이브의 디렉토리 일 수 있습니다. 백업은이 디렉토리를 압축하는 것입니다.
Visual Studio for Subversion에 대한 몇 가지 플러그인이 있습니다. AnkSvn 은 제가 사용한 플러그인 이며 무료이며 멋지게 통합됩니다 (즉, 파일 이동 및 삭제 등이 현명 할 것입니다).
Subversion은 한 개발자에게 좋은 선택입니다.
최신 정보:
이 게시물 이후로 Mercurial을 사용하고 있습니다. 분산 SVN입니다. '분산'측면은 단독 개발자에게 직접적으로 유용하지 않을 수 있지만 병합에 더 좋고 다소 빠릅니다. 무료이고 좋은 Windows 탐색기 확장 클라이언트 인 Tortoise Hg도 있습니다.
요약하자면 한 번에 여러 지점에서 작업하는 사람 (스파이크 등)이거나 한 번에 여러 대의 PC에서 작업하고 둘 다의 체크인 기록에 대한 전체 오프라인 액세스를 원하는 경우 Mercurial . 간단한 추적과 잘 입증되고 이해하기 쉬운 솔루션을 원한다면 Subversion .
아무도 Perforce 를 언급하지 않았다는 것에 놀랐습니다 . 2 인용 무료이며 매우 빠르며 VS와 통합됩니다. 또한 소스 서버 에는 기본적으로 바인딩이 있습니다.
소스 제어 외에도 루프를 완료하고 심볼 서버 와 소스 서버를 설정하여 제공 한 모든 항목을 간단히 디버깅 할 수 있습니다 (예 : 바이너리와 일치하는 pdb 또는 소스를 더 이상 검색하지 않아도 됨). . 소스 서버와 심볼 서버는 모두 완전 무료이며 2005 년부터 VS에서 지원됩니다.
당신은 SourceGear에서 볼트를 사용할 수 있습니다 비주얼 스튜디오 소스 안전을위한 대체 도구입니다. IDE는 Visual Studio에 통합되어 있습니다.
이 도구는 단일 사용자에게 무료입니다.
추가 정보 : http://www.sourcegear.com/vault/index.html
I use Mercurial. It runs a treat running stand alone on my Vista development system with no other dependencies required. I use the command line but there's also TortoiseHG to integrate with Explorer.
Two comments:
- There are other tools which probably integrate with VS better. I think Subversion has nice VS plug ins.
- The benefit of a separate server is that it's a nice backup of all your work in case your HDD dies on you etc. so discount having one.
Edit: @Slartibartfast - if you just want to run source code control on a single machine a Distributed Source Code Control tool like git or Mercurial is ideal since they're designed to run complete repositories on a machine without the overhead of a server. The fact that you never connect your repository to anyone else's to push and pull changes doesn't mean that tool won't be right.
There are two possible solutions for your problem: centralized VCS or Distributed VCS (DVCS).
Centralized VCS like Subversion would satisfy you feature for committing and browsing the log. It also enables you to safely store your repository to another computer which should be one of your major goals as hard drive failure is always a possibility. However, using Subversion the history still resides only at the central location making it vulnerable and you stated that you do not want to have another server.
Distributed Version Control Systems (DVCS) such as Mercurial and Git enable you to do more complex operations on your repository. With both of those tools the whole repository resides with the same computer making it bit easier to make backups and using the repository with another computer e.g. laptop. While Mercurial might seem complex at first the operations you would use with subversion are pretty much the same with Mercurial. Therefore there is no extra overhead to get started if you already know Subversion and you can easily use more advanced features of Mercurial later.
You should be able to find online repository service for your Mercurial repository enabling you to make easy backups and do collaboration some day if you have the need for it.
My recommendation is Mercurial with TortoiseHg.
A source control system doesn't care if there's only one developer involved :)
I would recommend that you use a source control system that you've used before and liked.
If you like vs 2008 integration of the source control system however I would go with TFS although I never had the experience to set it up but it shouldn't be so hard.
Another possibility is to use svn (you'll find some servers on google) and use Tortoisesvn that integrates into the windows shell and is nice to work with.
A number of the posts advocate putting the repository on a server because it provides redundancy. I don't think this is all that helpful for a single user. Using a separate server machine adds a lot of complexity, but it doesn't buy much redundancy: if you lose the server machine, you still have the current sources on your development machine, but you may have lost ALL your history. Putting the repository on a server does make sense if that server is being regularly backed up. Using an exernal hosting service for the repository can provide storage redundancy, but you're at the mercy of the external service AND you need an internet connection to access the repository. If you use an external host, make frequent backups of the repository that you keep control of!
I would presonally recommend TortoiseSVN using a local file based repository. Just make sure you backup the local repository to a second machine or external media (such as CD-ROMs) on a regular basis.
I'd recommend two things:
First up, that other server - what happens if your machine dies? the house burns down? etc. Having it on another machine is a good idea from a redundancy point of view.
The second one is WHAT:
If you are very familiar with visual source(un)safe, think about SourceGearVault. It's VERY nice, very fast, and very much a vastly improved "clone" of VSS (ie works the same way from the users POV, not under the hood). Needs SQL server and windows tho (it's .NET + SQL server). Free for 1 user.
Of you are not, then I suggest you do one of two things:
First, get VisualSVN. It's great, works with VS2008 really well. Second, if you MUST run it locally, get VisualSVN server (free!). Make sure you have a good backup plan. Runs on XP/2003/2008/Vista etc.It's just Apache + SVN, under the hood, so it just saves you on the setup - took me 5 mins to install and have it running.
OR, and I prefer this one:
go somewhere like Unfuddle, Dreamhost etc, and get hosting for SVN. It's private, it's fast, and most of all - it's OFFSITE. My dreamhsot account, with something crazy like 500GB of storage and 1-2TB of transfer/month costs about $6/month! There are others which do SVN hosting + bug tracking etc. Look around.
But yeah - SVN is the schizzzznit.you could create a local repository, but I like having a remote, backed up server.
TFS is total, utter overkill for 1 developer (or <5 IMO)
I realize that cost isn't a problem but a nice free solution that wouldn't involve checking in and out would be to host the code within Dropbox by doing this you'd instantly get versioning and backup which are the main features that a single developer system would provide.
Bazaar is a good version control system. I like to use it for my linux configs because you don't need to create a separate repo.
A while back I did a how-to blog post on using SVN with only one developer. I called it Single serving source control
Well, for start, you don't need distributed one :) I'm not sure what this physical part means, because you could put svn server on your own machine in little trouble.
On the other hand, NetBeans have local history module that logs all local changes of a file. Maybe something like that would be enough for you if Visual Studio have something similar.
I would recommend Subversion since it's for single developer and I assume that you're not doing complex merging and lots of log/history checking.
Seems like many people are using http://svnrepository.com/ for their hosting. It comes with Trac and even Git if you need it later.
Some good answers here.
I want to re-iterate the suggestion to use a separate computer to host the source control server, although it doesn't have to be a dedicated machine. It could be your Windows Home Server box, or some other server you're already running. Or it could be a virtual machine hosted on some other server. Whatever, just make it separate from the machine(s) where you write code.
I also want to suggest that you get a good backup discipline for your server. Something nightly at least; hourly if you can. Back up to a dedicated device (like an external hard drive) or something offsite (a server in your cousin's house in another state) or in the cloud (Amazon S3). Remember that your source code is your key asset; take care of it!
I've been working with Bazaar now for a few weeks and really like it. I'm a linux developer so don't really know much about Tortois but if you like it you should know that there is a Tortoisbzr
Hands down I would use git, and I believe many reasons why a single-developer would like to use git are hinted at or described in git magic
I use Springloops - version control tool for developers
- SVN / Git version control
- Automatic deployment to servers
- Create repositories
- Invite people
- Import files
- Great support
So, try Springloops
I dont see why the fact that your one developer changes anything on the source control issue. I would follow the same system (in fact I do on my solo projects). I use wush.net (svn and trac) in those cases. It's fast to set up and dont require that you yourself do or know any server issues. I recommend you use something like this.
I would recommend using subversion. Many have recommended using a seperate box as a server, in case your dev machine dies. What happens when the SVN server dies? The answer here is that no matter where you choose to run the server, ensure you always do frequent backups, possibly automated daily to some secondary, preferrebly offsite machine.
저는 Perforce를 제 개인용으로도 사용합니다. 주로 직장에서 사용하기 때문입니다. emacs 바인딩도 있으므로 emacs 내에서 동기화, 항목 체크인 또는 체크 아웃 등을 모두 수행 할 수 있습니다.
저는 최근에 제 스튜디오를 Subversion에서 Perforce로 옮겼고 여기 에있는 제 블로그에 포스트 모템과 같은 메모를 추가했습니다 . 유용하기를 바랍니다.
참조 URL : https://stackoverflow.com/questions/45400/source-control-system-for-single-developer
'IT TIP' 카테고리의 다른 글
menuitem의 actionlayout은 아무것도하지 않습니다. (0) | 2020.12.31 |
---|---|
Flutter에서 열에 ListView를 추가하는 방법은 무엇입니까? (0) | 2020.12.31 |
dropzone.js의 기본 텍스트를 어떻게 변경합니까? (0) | 2020.12.31 |
신속하게 이번 달의 첫 번째와 마지막 날 (0) | 2020.12.31 |
Ruby on Rails의 '뒤로'브라우저 작업 (0) | 2020.12.31 |