[chromium-dev] Re: Is it possible to create branches?
As the team's git fanatic I feel it's my duty to tell you that git would help with this, but I agree with the commenters who say that your commits must be reviewed. The way I use it is a single git branch manages the period between start typing and think this is ready for review commit, while a series of interrelated git branches track the larger arc of your feature. Then you can get each branch reviewed and committed separately. As the team's git fanatic I'll throw in that I think git is very useful for managing an interrelated series of changes -- you can, for example, iterate on feedback on change A while still working on dependent change B. But you also need to be decently comfortable with git for that and learning is slow. On Tue, Jun 16, 2009 at 9:35 PM, Daniel Cowxdaniel.c...@gmail.com wrote: What is the recommended procedure for working on long/big features? In the past, I've always created a separate branch and then done all my work there. I then do regular integrations from trunk into my branch to ensure that that my branch doesn't drift too far out of sync with the trunk (i.e. so as to minimize the amount of merge work I have to do when I'm ready to have my branch-specific changes reviewed and merged back into the trunk). However, being that chromium is hosted on a remote SVN server which I have no control over, what is the recommended way of doing dev? I'd really like to be able to do commits of my incremental work, but without a sep branch to fiddle around with, how can I accomplish this? All input and feedback welcome. Cheers, Daniel --~--~-~--~~~---~--~~ Chromium Developers mailing list: chromium-dev@googlegroups.com View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~--~~~~--~~--~--~---
[chromium-dev] Re: Is it possible to create branches?
I learned git 3 days ago and I actually love it. It is very easy to create branches and for your big feature you are trying to implement, it is better to organize it into different milestones. Because in git/chromium world, every branch can have at most one CL (Change List, Review). So if you define your milestones for your big feature before hand, by describing what your trying to do, you can then define how you can apply them to different branches and incrementally review each branch. Its easier for you to manage as well for the reviewers. Make sure you present a proposal on what your trying to accomplish and attach it to a tracking bug. For example, write up a detailed design document on what your big feature will do and then request comments on the discuss mailing lists. Its good to address the issues on why your big feature should be done in chrome. Don't put a lot of work implementing this before people think your design and idea is ok for the chromium project. -- Mohamed Mansour On Wed, Jun 17, 2009 at 12:35 AM, Daniel Cowx daniel.c...@gmail.com wrote: What is the recommended procedure for working on long/big features? In the past, I've always created a separate branch and then done all my work there. I then do regular integrations from trunk into my branch to ensure that that my branch doesn't drift too far out of sync with the trunk (i.e. so as to minimize the amount of merge work I have to do when I'm ready to have my branch-specific changes reviewed and merged back into the trunk). However, being that chromium is hosted on a remote SVN server which I have no control over, what is the recommended way of doing dev? I'd really like to be able to do commits of my incremental work, but without a sep branch to fiddle around with, how can I accomplish this? All input and feedback welcome. Cheers, Daniel --~--~-~--~~~---~--~~ Chromium Developers mailing list: chromium-dev@googlegroups.com View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~--~~~~--~~--~--~---
[chromium-dev] Re: Is it possible to create branches?
Against that, I sometimes use git to manage breaking reviews up. I'm always a bit unhappy to get a review which includes one bit of complex stuff that needs a bunch of back-and-forth, and another few bits of uncontentious stuff which is easy to +1. I'd rather see those separately, so that the easy-to-review stuff can get committed and we don't have to worry about accidental changes creeping into that code. 'git rebase -i' and keeping your local commits small and targeted makes this pretty easy to do. -scott On Tue, Jun 16, 2009 at 11:07 PM, Evan Martine...@chromium.org wrote: As the team's git fanatic I feel it's my duty to tell you that git would help with this, but I agree with the commenters who say that your commits must be reviewed. The way I use it is a single git branch manages the period between start typing and think this is ready for review commit, while a series of interrelated git branches track the larger arc of your feature. Then you can get each branch reviewed and committed separately. As the team's git fanatic I'll throw in that I think git is very useful for managing an interrelated series of changes -- you can, for example, iterate on feedback on change A while still working on dependent change B. But you also need to be decently comfortable with git for that and learning is slow. On Tue, Jun 16, 2009 at 9:35 PM, Daniel Cowxdaniel.c...@gmail.com wrote: What is the recommended procedure for working on long/big features? In the past, I've always created a separate branch and then done all my work there. I then do regular integrations from trunk into my branch to ensure that that my branch doesn't drift too far out of sync with the trunk (i.e. so as to minimize the amount of merge work I have to do when I'm ready to have my branch-specific changes reviewed and merged back into the trunk). However, being that chromium is hosted on a remote SVN server which I have no control over, what is the recommended way of doing dev? I'd really like to be able to do commits of my incremental work, but without a sep branch to fiddle around with, how can I accomplish this? All input and feedback welcome. Cheers, Daniel --~--~-~--~~~---~--~~ Chromium Developers mailing list: chromium-dev@googlegroups.com View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~--~~~~--~~--~--~---
[chromium-dev] Re: Is it possible to create branches?
#1, make sure you have a bug open and a design document (exampleshttp://dev.chromium.org/developers/design-documents). Nothing's worse than going off on a long-lived feature expedition and then returning to trunk to find out people don't want the feature or want some other design. #2, work on trunk (as pkasting outlined). Put on red slippers, click the heels together and repeat There's no place like trunk, there's no place like trunk... We've successfully developed many features behind command line switches, some of which required major surgery. Working on trunk, your code stays fresh, you get more feedback along the way, and you can have your unit tests running on the builders. A branch is really only useful if you need to collaborate with someone else or _need_ your code to diverge from trunk. --Mark On Tue, Jun 16, 2009 at 21:35, Daniel Cowx daniel.c...@gmail.com wrote: What is the recommended procedure for working on long/big features? In the past, I've always created a separate branch and then done all my work there. I then do regular integrations from trunk into my branch to ensure that that my branch doesn't drift too far out of sync with the trunk (i.e. so as to minimize the amount of merge work I have to do when I'm ready to have my branch-specific changes reviewed and merged back into the trunk). However, being that chromium is hosted on a remote SVN server which I have no control over, what is the recommended way of doing dev? I'd really like to be able to do commits of my incremental work, but without a sep branch to fiddle around with, how can I accomplish this? All input and feedback welcome. Cheers, Daniel --~--~-~--~~~---~--~~ Chromium Developers mailing list: chromium-dev@googlegroups.com View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~--~~~~--~~--~--~---
[chromium-dev] Re: Is it possible to create branches?
Use git-svn? See http://code.google.com/p/chromium/wiki/UsingGit . On Tue, Jun 16, 2009 at 9:35 PM, Daniel Cowxdaniel.c...@gmail.com wrote: What is the recommended procedure for working on long/big features? In the past, I've always created a separate branch and then done all my work there. I then do regular integrations from trunk into my branch to ensure that that my branch doesn't drift too far out of sync with the trunk (i.e. so as to minimize the amount of merge work I have to do when I'm ready to have my branch-specific changes reviewed and merged back into the trunk). However, being that chromium is hosted on a remote SVN server which I have no control over, what is the recommended way of doing dev? I'd really like to be able to do commits of my incremental work, but without a sep branch to fiddle around with, how can I accomplish this? All input and feedback welcome. Cheers, Daniel --~--~-~--~~~---~--~~ Chromium Developers mailing list: chromium-dev@googlegroups.com View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~--~~~~--~~--~--~---
[chromium-dev] Re: Is it possible to create branches?
It might take a bit of getting used to, but git is a revision control tool that allows you to create your own personal branches. Many Chromium developers use it for their daily work. The way it interfaces with svn is a bit clunky, but if you're not committing very often, it probably won't matter much to you. That said, I'm not sure if you're going to be able to do work like you have on other projects. We take code reviews very seriously, and it's pretty hard to do code reviews except in small increments. This is partially because it's hard for a reviewer to understand all the elements of a large change. But it's also partially because a reviewers will have suggestions for how you could do things better. Even people who have been working on Chromium from the beginning still go through reviews and often need to tweak designs based on said reviews. One way or another, you'll need to figure out how to get from point A to point B in small increments. Sometimes I like to prototype in a branch and then re-implement it in the trunk as multiple smaller patches. This seems wasteful, but since you're not worrying about the details in the first phase and you know exactly what you need to do and how to do it in the second phase, it's actually not a bad way to go. If, on the other hand, you understand the path you want to take pretty well, then maybe you should just do it in the trunk. You can do it behind a run-time flag if necessary. Out of curiosity, what are you planning on working on? J On Tue, Jun 16, 2009 at 9:35 PM, Daniel Cowx daniel.c...@gmail.com wrote: What is the recommended procedure for working on long/big features? In the past, I've always created a separate branch and then done all my work there. I then do regular integrations from trunk into my branch to ensure that that my branch doesn't drift too far out of sync with the trunk (i.e. so as to minimize the amount of merge work I have to do when I'm ready to have my branch-specific changes reviewed and merged back into the trunk). However, being that chromium is hosted on a remote SVN server which I have no control over, what is the recommended way of doing dev? I'd really like to be able to do commits of my incremental work, but without a sep branch to fiddle around with, how can I accomplish this? All input and feedback welcome. Cheers, Daniel --~--~-~--~~~---~--~~ Chromium Developers mailing list: chromium-dev@googlegroups.com View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~--~~~~--~~--~--~---
[chromium-dev] Re: Is it possible to create branches?
On Tue, Jun 16, 2009 at 9:35 PM, Daniel Cowx daniel.c...@gmail.com wrote: What is the recommended procedure for working on long/big features? Make an off-by-default switch and write your code under the switch, in the trunk. Branches eventually have to be integrated. This is never as easy to review as simply writing the change in the trunk to begin with. Plus code review along the way is very useful. Perhaps you can locally do something without checking in just to make a rough prototype (if you must), but I would generally avoid working on a branch. PK --~--~-~--~~~---~--~~ Chromium Developers mailing list: chromium-dev@googlegroups.com View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~--~~~~--~~--~--~---