> 1.) When doing `git cl dcommit`, I always get > > "Transaction is out of date: File > '/trunk/src/chrome/app/generated_resources.grd' is out of date at > /opt/local/libexec/git-core/git-svn line 469 > > Command "git svn dcommit --no-rebase" failed. > > at first. The first few times, I tried a `git svn rebase`, but that > always told me that > > Last fetched revision of refs/remotes/origin/trunk was r22892, but we are > about to fetch: r21840! > > and didn't help. Now I always do `rm -rf .git/svn && git svn fetch` > before `git cl dcommit`. After that, `git cl dcommit` then tells me > that > > Base branch "refs/remotes/origin/trunk" has 24 commits not in this branch. > Run "git merge refs/remotes/origin/trunk" before attempting to dcommit. > > which I do, and after that committing works. However, blowing away all > svn information and regenerating it each time seems stupid. What am I > doing wrong, and how can I do it better?
Many people have ran into this, and I am mystified (I've never ran into it myself). It seems to maybe only affect Windows users, which makes me think there's something going on there with git-svn. Some guesses: - are you using a git > 1.6.1? they fixed some important bugs in this area around then - maybe svn and git are disagreeing about file line endings? For what it's worth, my path from git n00b to git ninja involved reading source. You can "vi `which git-svn`" and add some debugging prints if you're interested in tracking it down; git-svn is relatively straightforward. > 2.) I often have 3-5 feature branches. When one of them is of them is > getting ready to submit, I usually rebase it on ToT before sending it > to the try servers. I do this thusly: > > git checkout trunk > git pull > git checkout myfeaturebranch > git rebase trunk > > (this can probably be done in an easier way, but it works and is > easily put into a bash alias, so I looked only briefly for a better > way, and didn't find anything). Now, when I want to work on the other > branches, I always rebase them to trunk when I switch to them, i.e. I > run > > git checkout otherbranch > git rebase trunk > > If I didn't use that branch for a week or so, the first step takes > quite some time to remove all the changes that I pulled in since last > using my branch, while the second step takes about the same time to > undo all the work that the first step did, which seems stupid. Is > there a command for "go to that branch, but rebase it immediately"? Eric always complains about this for his WebKit work too. It is not clear to me why rebase works the way it does. It seems you could hack it or hack up a script that does it the other way around. ...yeah, it's not very complicated. $ file git-rebase && wc -l git-rebase git-rebase: POSIX shell script text executable 527 git-rebase Maybe I'll write something today. --~--~---------~--~----~------------~-------~--~----~ Chromium Developers mailing list: [email protected] View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~----------~----~----~----~------~----~------~--~---
