On Apr 21, John Clements wrote: > > A *different* way to work on some new feature is to create a > separate clone of the repository, do the work there, and then merge > this whole repository with the main one. If I understand correctly, > this latter strategy is equivalent to working on a local machine and > never doing a "push", except that the "local machine" repository can > live on the server. > > Is this a correct picture?
The main confusion here is that it's somehow expensive or difficult to push changes from one repository to another. Very roughly speaking, here's how you'd use your own branch, which is on the main repository: 1. Clone the main plt repository 2. Create your branch 3. Loop: - Work on your branch - Push changes to the main repository When you're done: 4. Merge your branch changes to the master branch 5. Push this master branch to the plt repository 6. Delete your branch If you're working with a private clone, this would look almost the same: 1. Clone the main plt repository on the server to get a private copy 2. Clone your private copy 3. Loop: - Work (on the master branch, or your own branch) - Push changes to your repository When you're done: 4. Merge your changes to the master branch on the main repository 5. Push this master branch to the plt repository 6. Delete your private repository (unless you have other branches you're working with there) The "trick" here is that in a git repository you can pull from one remote repository, and push to another. I'll have a more concrete workflow(s) description later. > If so: what's the problem with branches? Is it that all of the code > in the branches goes out to all of the plt developers, whereas in > the second strategy it happens only when it gets merged back in with > the trunk? That's one, but there's a number of related issues. The bottom line is that having a private copy looks like something that is easier to manage on the server, more robust, easier to configure separately the way that you want to, and gives you more freedom in working in any way you want to. -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! _________________________________________________ For list-related administrative tasks: http://list.cs.brown.edu/mailman/listinfo/plt-dev