Hi everyone,<div><br></div><div>I am sure I am missing something fairly obvious, but we are having real issues with our current workflow, and I am sure there must be a way to do it better than we are currently.</div><div><br>

</div><div>The situation:</div><div><br></div><div>We have a mainline called trunk.</div><div><br></div><div>We have a number of developers, each using their own branched version of trunk where they do work, lets say adding feature X.</div>

<div><br></div><div>Lets say I make some progress on the feature, then I commit.&nbsp;</div><div><br></div><div>I then try and keep up to date with trunk, because I want to have as few conflicts as possible in the long term. So, I have to use bzr merge, resolve conflicts, then commit. Commit message is usually &quot;Merged from trunk&quot;. Repeat this a number of times. I don&#39;t use pull, because then I have not committed my work, and if I get some complicated conflicts that I dont&#39; resolve correctly the first time, I am in danger of losing my work.</div>

<div><br></div><div>Then, I am done with the feature. I want to push to trunk. I use bzr push.</div><div><br></div><div>I now end up with a nested commit tree, where I am responsible for all the changes that have been done since I started feature X.</div>

<div><br></div><div>ie.</div><div><br></div><div>revno something</div><div>committer: me</div><div>adding feature X.</div><div>&nbsp;&nbsp; &nbsp;</div><div>&nbsp;&nbsp; &nbsp; revno blah merged from trunk</div><div>&nbsp;&nbsp; &nbsp; committer: me</div><div>&nbsp;&nbsp; &nbsp;&nbsp;</div>

<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; revno blah</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; committer: someone else</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;revno: blah</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;committer: yet someone else</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;some other feature</div><div><br></div>

<div>&nbsp;&nbsp; &nbsp;revno blah</div><div>&nbsp;&nbsp; &nbsp;committer: me</div><div>&nbsp;&nbsp; &nbsp;some work on featureX</div><div>&nbsp;&nbsp; &nbsp;</div><div><br></div><div>If I want to avoid this I have to:</div><div><br></div><div>do a clean branch of trunk.</div><div>

bzr branch /path/to/trunk trunk-clean</div><div><br></div><div>do diff trunk myBranch</div><div><br></div><div>apply the diff to trunk-clean</div><div><br></div><div><br></div><div>Which no one ever does.</div><div><br></div>

<div>What are we missing? This has to be a pretty common workflow, but there doesn&#39;t seem to be a clear way to support it.</div><div><br></div><div>should we be using bzr send or something instead of push?</div><div>
<br>
</div><div>should we be using rebase or something?</div><div><br></div><div>Cheers,</div><div>Andrew</div>