Re: [crossfire] Crossfire should use Git

2014-06-16 Thread Mark Wedel

On 06/14/14 11:30 AM, Kevin Zheng wrote:
snip

I believe the most compelling reason to use a DVCS is that it makes
contributions easier. About a year ago a common complaint about my
patches were that too many changes were lumped together in one patch,
making it hard to review. While I could have used Git or Hg to make a
local repository, I did not think that was worth the trouble.


 True - a DVCS certainly makes it easier to have/make multiple unrelated 
changes and make them available as individual patches (presuming good practices 
were followed and the developer remembers to check them in their local repo 
separately).


 I also think DVCS is also better if one is making really big changes that will 
take a while to do, because of the better branching, local commits, and merging 
- for something like SVN, you would pretty much need to make your own branch, 
which then also shows up in the main repo.




Next, an adventure:

I've taken the liberty to install and attempt to learn Mercurial.
Since I am brainwashed by the Git world, please correct me if I'm wrong.

My current workflow involves putting all non-trivial or multi-commit
projects in a separate branch. Then I dangerously reorder, squash,
and otherwise mutilate my local branch until it can be laid on top of
the SVN trunk, where I dump back the linear history.

If I used Hg, this would likely involve making many copies of the
repository (since each branch is an entire checkout) for minor
changes. Since I make extensive use of the Git staging area, I would
wind up using `hg record` (an extension) very often. I would also end
up maintaining patch sets using message queues (another extension), in
order to clean up my changes before committing. In addition, it would
be impossible for me to rebase my commits, which means that every
branch would require its own merge. If you take a look at my commits,
most have been squashed versions of local branch work.


 I'm not at all familiar with git, so I'm 100% how to compare the 2.

 I'm not 1005 sure why you would need many copies of the repository - there is 
nothing that prevents making a clone, making one set of changes, doing a local 
commit, making another set of changes, doing a local commit, and repeat as 
necessary.


 The only reason you would need many copies of the repository is if you were 
making different changes to each one - you could still do that with hg, but that 
seems like a somewhat odd way to develop code.


 Note you can reparent with mercurial quite easily - presuming there is a 
common parent, it is just a matter of doing 'hg pull newparent'.  You can 
likewise do the same with the push, but you need to be up to date relative to 
the parent (mercurial will make sure this is the case).


 All that said, at work, we use the cadmium extensions which provide some nice 
features like 'recommit', which collapses all the commits in the branch into a 
single delta which can be pushed later.  I'm not sure how available the cadmium 
tools are.  But whether people use extensions or not for mercurial doesn't 
matter much - those extensions are local to them, and the main repo doesn't 
really care.  So people can use whatever extensions work best for them.




I advocated Git because we should use the VCS that I'm most familiar
with. It works with the workflow that I'm most comfortable with. I
welcome anyone familiar with Hg to reeducate my current workflow. If I
am the only developer that makes use of such a workflow, then I
apologize for being selfish and greedy.


 The problem is that if I took that attitude several years ago, we probably we 
be on mercurial.  Crossfire is a community project, so has to meet the needs of 
many developers.  While SVN is pretty limiting, one thing it has going for it is 
that it is quite simple to use - non hardcore developers can understand and use 
git without much problem - from many of the other posts I've seen, that is not 
true with git (and mercurial for that matter).  So having something simple and 
easy to use has lots of advantages, with limited disadvantages (main one being 
that SVN is not a DVCS)




Git has a good SVN bridge. Hg has a good Git bridge. Git does NOT have
a good Hg bridge (Git's fault). If I keep my current workflow, then
I'd much rather stick with SVN and play with local Git branches.


 IMO, that may just be the simplest way to go - I understand it is more pain 
for you, but there is a fair amount of pain to switch what VCS crossfire uses (I 
did this one before) - aside from the different commands people need to know, 
everyone also has to point to the new repo, you have to make sure there are not 
any outstanding commits, etc.


 Plus, from the other people that replied, there clearly was not an unanimous 
chorus of everyone agreeing to a move to git - granted the number of replies was 
limited, but if anything, seemed to be more opposition to it than those in favor.


___
crossfire 

Re: [crossfire] Crossfire should use Git

2014-06-14 Thread Kevin Zheng
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi again,

First, a few responses:

Many of the reasons I mentioned do extend to most DVCSs, and this is
the fault of my own (thinking that Git == DVCS).

I'll concede that Git has a fairly steep learning curve, although I'll
assert that it is harder to use a pneumatic drill than a hammer. I
learned Git after SVN and it was not a big problem for me.

I believe the most compelling reason to use a DVCS is that it makes
contributions easier. About a year ago a common complaint about my
patches were that too many changes were lumped together in one patch,
making it hard to review. While I could have used Git or Hg to make a
local repository, I did not think that was worth the trouble.

Next, an adventure:

I've taken the liberty to install and attempt to learn Mercurial.
Since I am brainwashed by the Git world, please correct me if I'm wrong.

My current workflow involves putting all non-trivial or multi-commit
projects in a separate branch. Then I dangerously reorder, squash,
and otherwise mutilate my local branch until it can be laid on top of
the SVN trunk, where I dump back the linear history.

If I used Hg, this would likely involve making many copies of the
repository (since each branch is an entire checkout) for minor
changes. Since I make extensive use of the Git staging area, I would
wind up using `hg record` (an extension) very often. I would also end
up maintaining patch sets using message queues (another extension), in
order to clean up my changes before committing. In addition, it would
be impossible for me to rebase my commits, which means that every
branch would require its own merge. If you take a look at my commits,
most have been squashed versions of local branch work.

I advocated Git because we should use the VCS that I'm most familiar
with. It works with the workflow that I'm most comfortable with. I
welcome anyone familiar with Hg to reeducate my current workflow. If I
am the only developer that makes use of such a workflow, then I
apologize for being selfish and greedy.

Git has a good SVN bridge. Hg has a good Git bridge. Git does NOT have
a good Hg bridge (Git's fault). If I keep my current workflow, then
I'd much rather stick with SVN and play with local Git branches.

Thanks,
Kevin Zheng
-BEGIN PGP SIGNATURE-
Version: GnuPG v2
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJTnJS1AAoJEOrPD3bCLhCQvq8H/RvwMBwd3N1F13IXM6URjAiE
TVMQ/eFf3XjKq9048NOd64YTCsCRyBKZt7PUOVlaUnaIRAcblwMyGLWuvwIlQOwZ
CImrQi+66YkeKoFB5GEH9bCLDhHzDNQu2GsZVNTnTF/AUeYpJdiwiOlaJMqpVKyh
lhdzCNJNR2GAe/aT7HdDnlq/Z/CIvngpWQqc++WaLQLmoYvw0gqWWM5yGxiAzo+l
+vR24q0LxSTvtAc1E8mLX15eQx3Z+8Q0/Dbdd0TT78AX1DDMH2teAkumWcuRGDot
IMM6c9DofKvEL2B0I2Y15tH6RFYhzpcexKssP8h5zFAuFMBMbcY2QszvHy63jbY=
=rfsf
-END PGP SIGNATURE-
___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Crossfire should use Git

2014-06-14 Thread Nicolas Weeger
/me throws some plain non blessed water to squash the religious war



Nicolas


Le vendredi 13 juin 2014 15:13:22, Kevin Zheng a écrit :
 Hi all,
 
 Crossfire originally lived in the world of CVS, until a handful of brave
 knights ventured to move it to SVN. Today I believe it is time to move
 again, and this time to Git.
 
 Git is a distributed version control system, which means that checking
 out an old revision or reading the commit log does not require accessing
 the sometimes painfully slow servers on the Internet. Each 'clone' of
 the repository is a fully-functioning repository on its own. This means
 that developers, even those who do not have commit access, can work on
 projects at their own pace and submit them with tools such as `git
 format-patch` and others.
 
 Git makes branching easy. It makes maintaining them manageable. As an
 example, several important fixes were made in 'trunk', which have yet to
 be backported to 1.12.0. In addition, there are no release engineering
 branches, which means that each release is simply cut from the next
 'trunk' state in line. Even trivial fixes could benefit from topic
 branches, but SVN does not make this easy, convenient, or fun. Using Git
 branches would help create a more stable codebase by improving release
 engineering and adopting intermediate stable branches that servers can
 track. A recent autotools bug that wiped server configuration files, for
 example, could have been prevented if changes on the bleeding edge were
 evaluated by test servers first.
 
 Git is not terribly difficult to use. Right now I access the SVN
 repository through a local Git clone, but this is inadequate because I
 cannot publish my topic branches (without considerably difficulty). A
 migration that preserves tags, branches, and full revision history can
 be made as fast as the revisions are pulled from SVN.
 
 In summary, a few important benefits of using Git:
 
 - Contributors can work on the code easier, with revision control.
 - Distributed, so works without (slow) Internet access.
 - Encourages branching - more stable codebase.
 - Easy to use and migrate to.
 - Full (all revision history) repository size: 21.7 MiB (server), 13.9
   MiB (client), 106.1 MiB (maps)
 
 However, there are a few immediate problems:
 
 Most projects using SVN make extensive use of the revision number
 identifiers. Crossfire is no different. Git has revision (commit)
 identifiers, but they are meaningless without the repository, whereas
 SVN increments the number for each commit. I do not believe this is an
 issue, because client compatibility is not determined by this
 specifier, plugin versions are only checked to match, and other uses
 of the identifier can be removed.
 
 Of course, comments, questions, and hate mail are always welcome.
 
 Thanks,
 Kevin Zheng
 ___
 crossfire mailing list
 crossfire@metalforge.org
 http://mailman.metalforge.org/mailman/listinfo/crossfire


signature.asc
Description: This is a digitally signed message part.
___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Crossfire should use Git

2014-06-13 Thread Steven Johnson
I'm not a regular contributor either but I believe mercurial (hg) is the
better choice as well. Plus the site Bloody Shade mentioned
http://hginit.com/ easily explains the transition from svn to hg.
On Jun 13, 2014 9:29 AM, Bloody Shade bloodysh...@gmail.com wrote:

 I'm not sure I can agree with a move to Git, personally.

 There's plenty of drawbacks that also come with git (not that other
 version controls don't).
 I personally use mercurial (hg) for my projects and you can find more info
 on it and see if you like it at: http://hginit.com/

 I found this article with some things I also don't like about git, in case
 anybody else is wondering (although I'm sure there's more):
 http://steveko.wordpress.com/2012/02/24/10-things-i-hate-about-git/

 Then again, I'm not a regular contributor, so feel free to ignore this,
 but I thought it would be worth throwing my 2 cents.

 On 6/13/2014 10:13 AM, Kevin Zheng wrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 Hi all,

 Crossfire originally lived in the world of CVS, until a handful of brave
 knights ventured to move it to SVN. Today I believe it is time to move
 again, and this time to Git.

 Git is a distributed version control system, which means that checking
 out an old revision or reading the commit log does not require accessing
 the sometimes painfully slow servers on the Internet. Each 'clone' of
 the repository is a fully-functioning repository on its own. This means
 that developers, even those who do not have commit access, can work on
 projects at their own pace and submit them with tools such as `git
 format-patch` and others.

 Git makes branching easy. It makes maintaining them manageable. As an
 example, several important fixes were made in 'trunk', which have yet to
 be backported to 1.12.0. In addition, there are no release engineering
 branches, which means that each release is simply cut from the next
 'trunk' state in line. Even trivial fixes could benefit from topic
 branches, but SVN does not make this easy, convenient, or fun. Using Git
 branches would help create a more stable codebase by improving release
 engineering and adopting intermediate stable branches that servers can
 track. A recent autotools bug that wiped server configuration files, for
 example, could have been prevented if changes on the bleeding edge were
 evaluated by test servers first.

 Git is not terribly difficult to use. Right now I access the SVN
 repository through a local Git clone, but this is inadequate because I
 cannot publish my topic branches (without considerably difficulty). A
 migration that preserves tags, branches, and full revision history can
 be made as fast as the revisions are pulled from SVN.

 In summary, a few important benefits of using Git:

 - - Contributors can work on the code easier, with revision control.
 - - Distributed, so works without (slow) Internet access.
 - - Encourages branching - more stable codebase.
 - - Easy to use and migrate to.
 - - Full (all revision history) repository size: 21.7 MiB (server), 13.9
MiB (client), 106.1 MiB (maps)

 However, there are a few immediate problems:

 Most projects using SVN make extensive use of the revision number
 identifiers. Crossfire is no different. Git has revision (commit)
 identifiers, but they are meaningless without the repository, whereas
 SVN increments the number for each commit. I do not believe this is an
 issue, because client compatibility is not determined by this
 specifier, plugin versions are only checked to match, and other uses
 of the identifier can be removed.

 Of course, comments, questions, and hate mail are always welcome.

 Thanks,
 Kevin Zheng
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v2
 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

 iQEcBAEBAgAGBQJTmvjyAAoJEOrPD3bCLhCQsEIH/2CnCPs/FmKlGmgkMw98zo/b
 vIFMiFiMZsuEteKUajXZb3+OfabyvCTBJZc3nVOlVwxt6xT+9NcspmdPYIofqt2M
 24fhSY7LqSF5Odc/afQX6JrA21fgF/ryU6jc1Iri2+13Wk6TDEhQqZ/ASdSmaaZm
 IXd9iPb8D7EbSmp0pqvAGKriExVZDSIuukXmOQzbjG8mqFgczBnNdxP62bPh2H03
 NyMbd+nCFfaaXAca/5wGZgrqmx0OU8DiRx9FTKzwp1/Ku3t09PT9aUbuOY6qUKAU
 kdOQfdp8naAxCbf38B/9k+IU5lk+JFcbs576X3lreU0xyr1byZyparkfNOLk3XE=
 =lsHS
 -END PGP SIGNATURE-
 ___
 crossfire mailing list
 crossfire@metalforge.org
 http://mailman.metalforge.org/mailman/listinfo/crossfire



 ---
 This email is free from viruses and malware because avast! Antivirus
 protection is active.
 http://www.avast.com

 ___
 crossfire mailing list
 crossfire@metalforge.org
 http://mailman.metalforge.org/mailman/listinfo/crossfire

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Crossfire should use Git

2014-06-13 Thread Rick Tanner
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1


My questions on going with a distributed revision control has to do
with how does all these changes in a branch make it back to the main
code base?

This is not a question in regards to command syntax and code merging
practices.  It's more on a administrative or QA level.

Perhaps I'm asking who brings in all the changes from the branches
to the main code base?

Thank you,

Rick Tanner




-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.7 (Darwin)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iD8DBQFTm4NQhHyvgBp+vH4RAvepAKCmTqzcsL28o6Q96Xm2CbxgNr1/QQCfUzY1
BjzHRN1yAdfmRHPBkU7OtmU=
=KBE3
-END PGP SIGNATURE-
___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Crossfire should use Git

2014-06-13 Thread Kevin Zheng
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 06/13/2014 18:03, Rick Tanner wrote:
 My questions on going with a distributed revision control has to
 do with how does all these changes in a branch make it back to the
 main code base?
 
 Perhaps I'm asking who brings in all the changes from the
 branches to the main code base?

I expect that branch maintenance and integration will remain pretty
much the same. Developers who choose to publish topic branches should
ultimately merge in changes when the code is ready.

Contributors who wish to make changes should make local commits and
generate patch sets. Contributors wishing to make extensive changes
can seek the help of a developer with commit access.

Keep in mind that it is not necessary to work in topic branches; the
current workflow can stay the same. I expect that more people will use
and publish branches, though.

Thanks,
Kevin Zheng
-BEGIN PGP SIGNATURE-
Version: GnuPG v2
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJTm4n8AAoJEOrPD3bCLhCQB9YIAL740CWrMriZ2Vi3JokSESxa
CG7qAecR2ELrD61FpDiLY04g2fAZdAMDoxPzeRX4i3mY+uwaWrzdie74/J8ufqB5
6aFyB0YEXHXr07CFFyRJWa09FXuPXgVZxzYU4vFLCkUspBujVdGmUbrsZdLHFxvR
qAxGSNhFVQyKUQvfJBrbu+mitJK2x2b15sigZOticKHfnkEQNCE3UKjBFM314QgQ
ps++0nusn1nQX9MrP5tl/gJV3ScfRZW81Eh6GkAcZPANlsajK4Hlrw88S3t/6l24
Q5oDEJE19XdrCkzwNLPpQhlQ9lvfTi/0/xGB9+jmWAZ9K3kx0UIcxZu3guAPT1A=
=6Axm
-END PGP SIGNATURE-
___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Crossfire should use Git

2014-06-13 Thread Mark Wedel


 Whenever these discussions come up (this is probably the 3rd or 4th 
iteration), the general response is 'we should use the VCS that I'm most 
familiar with'


 So on that basis, I'd vote for mercurial (use it at work) or SVN (crossfire 
already uses it)


 All that being said, for the amount of commits crossfire gets, I'm really not 
convinced a distributed VCS is worth the effort.  It is certainly useful for 
really big projects, or if making lots of changes such that you want to be able 
to do intermediate commits.


 To me, the only really compelling reason for a DVCS is that all the data is 
local, so you can do things like diff, history, etc, and still get data even if 
the master gate is down.


 I don't think it will make much difference in terms of maintaining branches - 
all systems I've seen have problems once branches drift apart - at some level, 
manual merging is possible.  Its been a while, but I seem to remember that even 
for SVN, there was a pretty simple way to do that.  The main problem (in 
general) with branches is people just generally don't want to do the extra steps 
to backport, even if the steps were pretty trivial.


 I'm really not convinced that a bunch of branches are desirable thing - 
whenever extra branches have shown up in SVN, they basically just languished, 
and I don't think it was because of the VCS, but rather there are not so many 
developers that your going to have 10 people working on the trunk and 8 playing 
on a branch - rather, everyone just works on trunk.


 Conceivably, this can be useful if working on a private branch, but a DVCS 
really doesn't help prevent merge hell if the branches drift too far apart 
(conflicts still need to be resolved by hand), though I suppose with a DVCS, 
they would need to be resolved less often vs trying to use SVN.


 mercurial at least can pull from a SVN repo, as it sounds like GIT can, but 
the issue is the push.  I have no idea if git and mercurial can play well 
together (if the repo was mercurial, can git do most things it needs to do or 
vice versa).



___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire