Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use an Internet Subversion respository when developing code?

I've painted my self into a problem working with a Subversion project from CodePlex - for this I asked for help here. I have a local repository and CodePlex has it's Internet repository for the project, and the two don't mix :-(.

But my dear departed dad used to tell me that the difference between a clever man and a wise man is that the wise man does not enter the trap a clever man find his way out of. In other words: I must have been doing something wrong. So:

Say you're a group of a few developers. There's a Subversion controlled project on the Internet you want to start modifying. You want to work on it locally, changing it to suit your needs. You want local version control. You want to control which Internet changes to accept to your repository - those that are relevant and important and don't cause noise. You want to commit to the Internet some of your local changes - those that you're sure that are stable, and that are relevant to the whole community.

This method of operation seems to me common sense, but then I've never worked on an open source project. So: 1. Is this indeed a common method of operation and 2. How do you go about doing it with Subversion without getting into trouble?

like image 391
Avi Avatar asked Nov 06 '22 20:11

Avi


2 Answers

Absorbing changes from an external source ("vendor drops") into your own local repository is covered in the SVN book in the section Vendor Branches.

Alternatively, you could just use the merge command to cherry pick revisions from a folder in repository A and apply those changes to a working copy of a folder in repository B. The merge command seems to have some support for this (at least in the latest version) so it probably works much like merging between local branches (minus the automatic merge tracking).

like image 109
Wim Coenen Avatar answered Nov 15 '22 11:11

Wim Coenen


Subversion is inherently a centralized revision control system. From your description, it sounds like you want a distributed revision control system. In such a system people can develop locally and then exchange their units of work (called changesets) between each other. Distributed revision control systems have excellent support for merging branches to support this.

I'm using Mercurial myself and would recommend it for a Subversion user since many of its commands a similar to the commands in Subversion. Others popular tools in this category include Git and Bazaar.

like image 35
Martin Geisler Avatar answered Nov 15 '22 12:11

Martin Geisler