On Fri, Apr 23, 2010 at 6:14 PM, yixiaodafang <yixiaodaf...@gmail.com> wrote: > I want to know whether I can have one project link to two different > server. Here is what I want to do. First I check out the project from > official server. During the time, I will make a lot of intermediate > changes before I finanlly commit them into the official server.
You actually asked something that is being debated heavily in the CM community: Central vs. Distributed repositories. In Git, you can do exactly what you want, and this is one of the reasons people like Git. In Git, you can checkout the entire repository, then use it as if it's your own private repository. Then, you check in the changes you've made back to the main repository. A lot of people think this is a better way to do version control, but one of the problems is that it allows you to work too independently from everyone else. For example, there's no reason not to check your changes back into the main repository after working on your project for a month. Being forced to use a centralized repository forces you to work with your fellow developers. You have to take "smaller bites" when you make changes. You have to do a bit more planning of what you want and think it through better. You have to coordinate your work with everyone else. The result is better software. There are times when distributed version control systems work the best. Usually, these are the cases where the owner of the repository really doesn't want to centrally maintain a list of who can or cannot make changes. Instead, they want to trust a small group and have this group take the responsibility of tracking others. However, if you have deadlines and commitments to customers, you are better off using a centralized version control system. You can track who can and cannot make changes. You track who made the changes, and you force people to work together. You didn't mention why you want to work the way you do. If this is for commercial software, and you are doing some major work which would prevent you from checking in your changes on a daily basis, you probably want to create a feature branch in the main repository. Then, you want to regularly merge the changes taking place on the trunk with your stuff, so you don't fall out of sync with the rest of the project. If you want to use the distributed method, you can try SVK: http://svk.bestpractical.com. SVK is a layer on top of the Subversion repository and allows you to work with Subversion as a distributed repository. If you don't have to use Subversion, you might want to look at Git or Bitkeeper which are built from the ground up to be distributed version control systems. -- David Weintraub qazw...@gmail.com