On Fri, Apr 23, 2010 at 6:14 PM, yixiaodafang <yixiaodafang_at_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
qazwart_at_gmail.com
Received on 2010-04-24 01:03:07 CEST