[fpc-other] Git & SVN
Karoly Balogh (Charlie/SGR)
charlie at scenergy.dfmk.hu
Tue May 23 22:10:20 CEST 2017
Hi,
On Tue, 23 May 2017, Karoly Balogh (Charlie/SGR) wrote:
> > To get get back on track, I'll restate the question I posed in the last
> > message unambigously:
> >
> > how to avoid that a push of member X doesn't leave a branch in an
> > undesirable state that leaves member Y three choices:
>
> How to avoid that member X with commit write access doesn't leave a branch
> in SVN in an undesirable state? :) You have to trust people, and choose
> who you give write access to a given branch/repository, really. This
> didn't really change and not an argument against git.
>
> And well, in Git you don't push, but people who want to contribute, have a
> pull request. Then you can review that, and either apply to your tree or
> reject it. It's important to understand that in git all repositories are
> equal, and that I have a "make-amiga-great-again" branch, doesn't mean
> that you should have it, I could still send a pull request against your
> master branch, or whatever branch. All pull requests are just a set of
> changes, really.
Ok, to put this into practical example: lets say some idiot decides to do
a Webassembly codegenerator for FPC. This idiot starts working on his
working copy, but quickly loses track... So he wants to start committing
his changes. But in SVN, this idiot has to either:
A., create a Webassembly branch and start committing there, polluting the
global SVN repository forever, even if he's demotivated after 5 commits,
and never touches that branch again. (...)
B., keep his changes in his working copy forever, getting in the way of
other changes, and causing endless conflicts with changes coming in from
trunk.
C., keep two working copies, in case he want to work on something
else meanwhile, and want to avoid accidental commits
(D., use git-svn, and create a local only branch - sic!)
Now, in Git, this idiot can do:
1., Have his own clone of the FPC repository. Create his local webassembly
branch, and keep happily working on his local copy, then leave it rot
when he loses motivation, doesn't distract anyone.
2., If he wants to involve others, he can publish his whole repository as
FPC-Webassembly project, independently from the main repository he forked,
and get others working on it. At this point his repository acts like an
independent fork of the compiler.
3., If his project succeeds (independent from the number of people worked
on his fork), then he can issue a pull request, while asking a review from
seniors on the FPC project. He can still do the changes requested from him
on his own repo, and commit them easily.
4., He can still sync his own repository with ease with the main FPC
project. So he can be sure when he sends his pull request, it will merge
seamlessly against the FPC master. (And this is in fact should be expected
from him.)
>From the two above, I would go for the Git option. Because we're already
stuck with the first one in SVN, and it's not good. ;)
The bigger picture is, that I can do the SVN branch, because I had write
access to the SVN. But people without commit access, can't. So this also
makes difficult from people independent from the project work on larger
scale changes on their own... Or if they still do (hello NewPascal!),
because git-svn allows them, it's difficult for us to integrate their
changes back...
Charlie
More information about the fpc-other
mailing list