Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2012-04

FreePascal Git Repo and 2_6 branch

7 messages · 5 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Graeme Geldenhuys
to David Jenkins
David Jenkins wrote
I am wondering if Graeme can update his FreePascal git mirror to include the 2_6 branches.

To do it the "correct way", is a lot of work, hence the reason I stopped mirroring the fixes branches. What I mean by "correct way", is cherry-picking the commits from Trunk (master) and applying them in the fixes branch - thus it is one standard git repository (with alternate branches), is more efficient for git to work with, and uses less disk space. But the problem is, it can't be automated (I need to manually track what commits are merged by FPC developers, manually fix conflicts etc) and my free time is very limited.

What I can do in an automated fashion, is to simply mirror the 2.6 fixes branch as a separate git repository (with limited history - going back to when 2.6 fixes branch was started). If this would be sufficient, I can set it up on Wednesday when I am back in the office. That's no trouble.

Regards,   - Graeme - _______________________________________________ fpGUI - a cross-platform Free Pascal GUI toolkit http://fpgui.sourceforge.net

Reply by email

Marco van de Voort
to Graeme Geldenhuys

In our previous episode, Graeme Geldenhuys said:

Show quoted text 8 lines
To do it the "correct way", is a lot of work, hence the reason I stopped mirroring the fixes branches. What I mean by "correct way", is cherry-picking the commits from Trunk (master) and applying them in the fixes branch - thus it is one standard git repository (with alternate branches), is more efficient for git to work with, and uses less disk space. But the problem is, it can't be automated (I need to manually track what commits are merged by FPC developers, manually fix conflicts etc) and my free time is very limited.

I can try to create some form of automated feed of fixes tree commits + items that are merged.

So assume fixes branch rev X merges revision T1,T2,T3 from trunk.

You then roughly would do

for X in all fixes revs to process since last processing do

   begin
     svn diff fixes branch X-1,X > temp.patch
     cherry pick from git trunk to git fixes revs  (e.g. T1 T2 T3)
     git revert all changes to files but not mergeinfo (resolves all conflicts)
     patch -p0 < temp.patch    ( applies the manually merged fixes)
     git push/commit whatever
   end;

An innerloop for T1,T2,T3 separately is unfortunately not possible (since manual fixes up might apply to all revs at once)

I'm not saying that I will have such info next week, but if you could test if you could get such scenario done with GIT, I can see if I drag such info out of the mergelog package in time. (which I'm still expanding)

I doubt it is the same as truly working through GIT (I'm not sure if tracking of line changesets works even if you could all T<x> individually), it might be already better since it is automated and has GIT level info per fixes rev what revs were merged from trunk.

It assumes GIT can deal with mergeinfo a bit creatively and flexible though.

Reply by email

Frank Church
to Marco van de Voort
Marco van de Voort wrote 45 lines
In our previous episode, Graeme Geldenhuys said: > To do it the "correct way", is a lot of work, hence the reason I > stopped mirroring the fixes branches. What I mean by "correct way", is > cherry-picking the commits from Trunk (master) and applying them in > the fixes branch - thus it is one standard git repository (with > alternate branches), is more efficient for git to work with, and uses > less disk space. But the problem is, it can't be automated (I need to > manually track what commits are merged by FPC developers, manually fix > conflicts etc) and my free time is very limited. I can try to create some form of automated feed of fixes tree commits + items that are merged. So assume fixes branch rev X merges revision T1,T2,T3 from trunk. You then roughly would do for X in all fixes revs to process since last processing do begin svn diff fixes branch X-1,X > temp.patch cherry pick from git trunk to git fixes revs (e.g. T1 T2 T3) git revert all changes to files but not mergeinfo (resolves all conflicts) patch -p0 < temp.patch ( applies the manually merged fixes) git push/commit whatever end; An innerloop for T1,T2,T3 separately is unfortunately not possible (since manual fixes up might apply to all revs at once) I'm not saying that I will have such info next week, but if you could test if you could get such scenario done with GIT, I can see if I drag such info out of the mergelog package in time. (which I'm still expanding) I doubt it is the same as truly working through GIT (I'm not sure if tracking of line changesets works even if you could all T<x> individually), it might be already better since it is automated and has GIT level info per fixes rev what revs were merged from trunk. It assumes GIT can deal with mergeinfo a bit creatively and flexible though. _______________________________________________ fpc-devel maillist - http://lists.freepascal.org/mailman/listinfo/fpc-devel

How about SubGit - http://subgit.com ?

I am always on the lookout for the next miracle cure :)

Disclaimer: sender of this email knows next to nothing about git and svn interoperability issues.

Frank Church ======================= http://devblog.brahmancreations.com

Reply by email

Juha Manninen
to Graeme Geldenhuys: To do it the "correct way", is a lot of work, hence the reason I stopped mirroring the…
Graeme Geldenhuys wrote 15 lines
To do it the "correct way", is a lot of work, hence the reason I stopped mirroring the fixes branches. What I mean by "correct way", is cherry-picking the commits from Trunk (master) and applying them in the fixes branch - thus it is one standard git repository (with alternate branches), is more efficient for git to work with, and uses less disk space. But the problem is, it can't be automated (I need to manually track what commits are merged by FPC developers, manually fix conflicts etc) and my free time is very limited. What I can do in an automated fashion, is to simply mirror the 2.6 fixes branch as a separate git repository (with limited history - going back to when 2.6 fixes branch was started). If this would be sufficient, I can set it up on Wednesday when I am back in the office. That's no trouble.

I think "git svn clone" with --stdlayout parameter could be used to create a whole repository with all branches.
Then tracking branches in git repo should be created and later they can be "git svn rebase"d to latest revision.

This kind of mirror could be created anywhere. Now all the mirrors are part of Graeme's workload.

Regards
Juha

Reply by email

David Jenkins
to Graeme Geldenhuys: To do it the "correct way", is a lot of work, hence the reason I stopped mirroring the…
Graeme Geldenhuys wrote 5 lines
What I can do in an automated fashion, is to simply mirror the 2.6 fixes branch as a separate git repository (with limited history - going back to when 2.6 fixes branch was started). If this would be sufficient, I can set it up on Wednesday when I am back in the office. That's no trouble.

For my situation this would be sufficient.

I have some local patches that git-rebase does a nice job of plopping on the head of the branch whenever there are changes. Right now those patches are sitting on trunk but I would like to move them to fixes-2_6 and maintain them there.

I had started to do a 'git svn clone' of the fpc repository myself and after it ran for 16 hours wondered if there were a better way. Creating the limited history 2.6 fixes branch repository myself is probably also an option if you have better things to do.

Thanks

David

Reply by email