Re: git svn branch tracking + ignore paths
- From
Lachlan Deck <lachlan.deck@gmail.com>
- Date
- Oct 29, 2009, 01:53 UTC
- Message-ID
- <D9663C6B-AF5E-4267-9E31-F1584D912461@gmail.com>
- In-Reply-To
- <32541b130910280900p421e69b1nbcd8dcfa211521ac@mail.gmail.com>
On 29/10/2009, at 3:00 AM, Avery Pennarun wrote:
Show 29 quoted lines
> On Wed, Oct 28, 2009 at 1:59 AM, Lachlan Deck > <lachlan.deck@gmail.com> wrote: >> On 28/10/2009, at 4:20 PM, Avery Pennarun wrote: >>> So which are the files you don't want to import from trunk? It >>> doesn't sound like there are any... so it's getting simpler already. >> >> There are. I've currently (as a workaround) done the following >> within the >> main branch: >> add the following to .git/info/exclude >> .settings >> target >> .classpath >> .project >> >> The last two of these has no effect of course because .project and >> .classpath files already exist -- and thus are marked as modified. >> So I'm >> currently doing a git stash && git svn rebase && git svn dcommit && >> git >> stash pop >> >> I'm also wanting to exclude 'lib' folders from trunk (as these are >> not >> needed). > > The problem is that as your branch diverges from what you *actually* > want to commit, it becomes exponentially more complicated to figure > out what you *do* want to commit.
Sure.
Show 34 quoted lines
> Note that if you're planning to share your git project with other > people anyway, then you have an additional problem: you're using git > svn rebase, which is almost useless for sharing with other people > (other than through svn, of course), for the same reason any git > rebase is. > > One option you have is to maintain two branches: > > 1. (git-svn) The git-svn trunk, which contains only stuff you want > upstream > > 2. (master) Your live branch, which contains everything from (1) plus > your local customizations. > > When you want to fetch from svn, you do this: > > git checkout master > git svn fetch git-svn > git merge git-svn > > When you want to push to svn, you do this: > > git checkout git-svn > git merge --squash --no-commit master > (now undo your local customizations) > git commit > git svn dcommit > git checkout master > git merge git-svn > > Note that master never gets rebased, only merged. If you can write a > simple script for "undo your local customizations" - such as reverting > a particular commit, for example - then you can put the above in a > shell script and it should work fine most of the time.
Thanks Avery! - that gives me something to think about.
with regards, --
Lachlan Deck