{"thread":{"id":"2751","subject":"Wine + GIT","startedAt":"2005-12-05T23:29:44Z","lastAt":"2005-12-07T00:56:16Z","messageCount":15,"participants":["Mike McCormack","Jeff Garzik","Junio C Hamano","Marco Costalba","J. Bruce Fields","Jon Loeliger","Andreas Ericsson","Nick Hengeveld","Ben Clifford"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"13234","messageId":"4394CD68.8020500@codeweavers.com","threadId":"2751","inReplyTo":null,"subject":"Wine + GIT","fromName":"Mike McCormack","fromEmail":"mike@codeweavers.com","sentAt":"2005-12-05T23:29:44Z","receivedAt":"2005-12-05T23:29:44Z","isPatch":false,"sender":{"key":"mike@codeweavers.com","avatar":null},"body":"Hi All,\n\nThe Wine project has started maintaining a wine.git in parallel to the \nWine CVS.  To introduce Wine developers to GIT, we've put together a \nshort introduction on the Wine Wiki on using GIT to maintain patches. \nYou can find it at:\n\nhttp://wiki.winehq.org/GitWine\n\nComments, flames, corrections and additions welcome :)\n\nMike\n"},{"id":"13236","messageId":"4394F173.6000505@pobox.com","threadId":"2751","inReplyTo":"4394CD68.8020500@codeweavers.com","subject":"Re: Wine + GIT","fromName":"Jeff Garzik","fromEmail":"jgarzik@pobox.com","sentAt":"2005-12-06T02:03:31Z","receivedAt":"2005-12-06T02:03:31Z","isPatch":false,"sender":{"key":"jgarzik@pobox.com","avatar":null},"body":"Mike McCormack wrote:\n> Hi All,\n> \n> The Wine project has started maintaining a wine.git in parallel to the \n> Wine CVS.  To introduce Wine developers to GIT, we've put together a \n> short introduction on the Wine Wiki on using GIT to maintain patches. \n> You can find it at:\n\n> http://wiki.winehq.org/GitWine\n\nVery cool!  :)\n\nComments:\n\n1) I wrote a git howto for kernel hackers, 95% of which applies to other \nprojects as well:  http://linux.yyz.us/git-howto.html\n\n2) The \"git-foo\" commands are apparently uncool.  \"git foo ...\" is \npreferred.\n\n3) replace\n\tgit-diff-index -p HEAD\nwith\n\tgit diff HEAD\n\n4) \"git commit -a\" can often replace git-update-index+git-commit\n\n5) never ever do\n\tgit-checkout -f HEAD\n\nHEAD should always be a symlink.  'git checkout -f master' is probably \nwhat you want.\n\n6) For merges with hand-merged conflicts, I could have sworn that either \na \"git commit -a\" or 'git-update-index' + 'git commit' was required. \nMaybe I'm wrong, or that has changed?\n"},{"id":"13237","messageId":"4394F50E.7030803@pobox.com","threadId":"2751","inReplyTo":"4394CD68.8020500@codeweavers.com","subject":"Re: Wine + GIT","fromName":"Jeff Garzik","fromEmail":"jgarzik@pobox.com","sentAt":"2005-12-06T02:18:54Z","receivedAt":"2005-12-06T02:18:54Z","isPatch":false,"sender":{"key":"jgarzik@pobox.com","avatar":null},"body":"Mike McCormack wrote:\n> Hi All,\n> \n> The Wine project has started maintaining a wine.git in parallel to the \n> Wine CVS.  To introduce Wine developers to GIT, we've put together a \n> short introduction on the Wine Wiki on using GIT to maintain patches. \n> You can find it at:\n> \n> http://wiki.winehq.org/GitWine\n\nOne other comment:  http:// is the slowest of all three transports. \ngit:// (git daemon) is preferred, followed by rsync.\n\nhttp:// takes forever, comparatively.\n\n\tJeff\n"},{"id":"13238","messageId":"7vhd9n7yfl.fsf@assigned-by-dhcp.cox.net","threadId":"2751","inReplyTo":"4394F173.6000505@pobox.com","subject":"Re: Wine + GIT","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-12-06T02:26:54Z","receivedAt":"2005-12-06T02:26:54Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff Garzik <jgarzik@pobox.com> writes:\n\n> 5) never ever do\n> \tgit-checkout -f HEAD\n>\n> HEAD should always be a symlink.  'git checkout -f master' is probably \n> what you want.\n\nCorrect.  \"git checkout -f HEAD\" is a redundant way to say\n\"I screwed up and would want to revert the mess in my working\ntree to my branch head\".  You do not need to say HEAD; \"git\ncheckout -f\" (or \"git reset --hard\" if you really want to clean\nthings up) would do.\n\n> 6) For merges with hand-merged conflicts, I could have sworn that either \n> a \"git commit -a\" or 'git-update-index' + 'git commit' was required. \n> Maybe I'm wrong, or that has changed?\n\nThat has not changed.  With the recent 0.99.9l change, I suspect\nthat the example on the wiki page (without update-index) would\nfail to commit -- the index is now left unmerged after a failed\nautomerge.\n\nThe paragraph \"Once you have finished editting [sic]...\" needs\nto be followed by:\n\n\tgit-update-index those paths you hand corrected\n        git-commit\n"},{"id":"13260","messageId":"439553AF.6070402@yahoo.it","threadId":"2751","inReplyTo":"4394CD68.8020500@codeweavers.com","subject":"Re: Wine + GIT","fromName":"Marco Costalba","fromEmail":"mcostalba@yahoo.it","sentAt":"2005-12-06T09:02:39Z","receivedAt":"2005-12-06T09:02:39Z","isPatch":false,"sender":{"key":"mcostalba@gmail.com","avatar":null},"body":"Mike McCormack wrote:\n> Hi All,\n> \n> The Wine project has started maintaining a wine.git in parallel to the \n> Wine CVS.  To introduce Wine developers to GIT, we've put together a \n> short introduction on the Wine Wiki on using GIT to maintain patches. \n> You can find it at:\n> \n> http://wiki.winehq.org/GitWine\n> \n> Comments, flames, corrections and additions welcome :)\n> \n\nabout\n\n\"Finally, there's a nice (but a bit slow) tool to view your GIT repository named \n[WWW] gitk. It gives you a view of the repository that looks like this:\"\n\nMay I sugest also qgit (http://sourceforge.net/projects/qgit).\n\nIt's faster then gitk and has some more feature too.\n\nThanks\nMarco\n\n\n\t\n\n\t\n\t\t\n___________________________________ \nYahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB \nhttp://mail.yahoo.it\n"},{"id":"13269","messageId":"20051206170803.GD17457@fieldses.org","threadId":"2751","inReplyTo":"4394F173.6000505@pobox.com","subject":"Re: Wine + GIT","fromName":"J. Bruce Fields","fromEmail":"bfields@fieldses.org","sentAt":"2005-12-06T17:08:03Z","receivedAt":"2005-12-06T17:08:03Z","isPatch":false,"sender":{"key":"bfields@citi.umich.edu","avatar":null},"body":"On Mon, Dec 05, 2005 at 09:03:31PM -0500, Jeff Garzik wrote:\n> 2) The \"git-foo\" commands are apparently uncool.  \"git foo ...\" is \n> preferred.\n\nHow does e.g. git-diff differ from git diff?  I thought they were\nequivalent.--b.\n"},{"id":"13271","messageId":"7vacfe2ks1.fsf@assigned-by-dhcp.cox.net","threadId":"2751","inReplyTo":"20051206170803.GD17457@fieldses.org","subject":"Re: Wine + GIT","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-12-06T17:33:02Z","receivedAt":"2005-12-06T17:33:02Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"J. Bruce Fields\" <bfields@fieldses.org> writes:\n\n> On Mon, Dec 05, 2005 at 09:03:31PM -0500, Jeff Garzik wrote:\n>> 2) The \"git-foo\" commands are apparently uncool.  \"git foo ...\" is \n>> preferred.\n>\n> How does e.g. git-diff differ from git diff?  I thought they were\n> equivalent.--b.\n\nFor now, but to futureproof your document and its readers, it is\nbetter spelled as \"git frotz\" not \"git-frotz\".\n\nThere is a long time-horizon plan to move most of the things out\nof /usr/bin/, and codewise we have the infrastructure to do it\ntoday. The only reason we haven't done so is that it would break\nscripts written by people who learned git from documents that\ntell them to write things in dash form, \"git-diff\".\n"},{"id":"13272","messageId":"20051206173909.GE17457@fieldses.org","threadId":"2751","inReplyTo":"7vacfe2ks1.fsf@assigned-by-dhcp.cox.net","subject":"Re: Wine + GIT","fromName":"J. Bruce Fields","fromEmail":"bfields@fieldses.org","sentAt":"2005-12-06T17:39:09Z","receivedAt":"2005-12-06T17:39:09Z","isPatch":false,"sender":{"key":"bfields@citi.umich.edu","avatar":null},"body":"On Tue, Dec 06, 2005 at 09:33:02AM -0800, Junio C Hamano wrote:\n> There is a long time-horizon plan to move most of the things out\n> of /usr/bin/, and codewise we have the infrastructure to do it\n> today. The only reason we haven't done so is that it would break\n> scripts written by people who learned git from documents that\n> tell them to write things in dash form, \"git-diff\".\n\nI've enjoyed getting tab completions without having to add whatever's\nrequired to my .bashrc to teach it about git subcommands.  Oh well, I'll\nget over it.\n\nI suppose the git-subcommand convention will continue for the purpose of\nnaming manpages?\n\n--b.\n"},{"id":"13273","messageId":"1133891589.8577.63.camel@cashmere.sps.mot.com","threadId":"2751","inReplyTo":"20051206173909.GE17457@fieldses.org","subject":"Re: Wine + GIT","fromName":"Jon Loeliger","fromEmail":"jdl@freescale.com","sentAt":"2005-12-06T17:53:09Z","receivedAt":"2005-12-06T17:53:09Z","isPatch":false,"sender":{"key":"jdl@jdl.com","avatar":"https://gravatar.com/avatar/75ce9a10b151acd2c28ec4ab2136dba7b2ff1634530bd04b155981a749d08a64?d=mp&s=160"},"body":"On Tue, 2005-12-06 at 11:39, J. Bruce Fields wrote:\n\n> I've enjoyed getting tab completions without having to add whatever's\n> required to my .bashrc to teach it about git subcommands.  Oh well,\n> I'll\n> get over it.\n\nI believe this effort is already well under way.\nUh, I also thought we were going to place it in\nsome \"contrib\" directory too...?\n\nAlso, before I learned of that bash completion effort,\nI was contemplating modifying the git.c command recognition\nso that it effectively did this:\n\n   cmd = ... whatever from command line\n   if (exec(cmd)) works then\n       happily clean up and exit\n   else\n       using the existing directory scan as a new function,\n       determine if \"cmd\" is a proper prefix of some command,\n       if it is unique then\n           exec(unique-cmd-disambiguated)\n       else\n           complain that it is not unique\n       fi\n    fi\n\nThat way:\n    \"git mer\" would fail\n    \"git merge\" would run \"git-merge\"\n    \"git merge-\" would fail\n    \"git merge-o\" would fail,\n    \"git-merge-oc\" would run \"git-merge-octopus\".\n\nAny interest?  Overkill?  Bad idea?\n\njdl\n"},{"id":"13274","messageId":"4395E01D.4080107@pobox.com","threadId":"2751","inReplyTo":"20051206170803.GD17457@fieldses.org","subject":"Re: Wine + GIT","fromName":"Jeff Garzik","fromEmail":"jgarzik@pobox.com","sentAt":"2005-12-06T19:01:49Z","receivedAt":"2005-12-06T19:01:49Z","isPatch":false,"sender":{"key":"jgarzik@pobox.com","avatar":null},"body":"J. Bruce Fields wrote:\n> On Mon, Dec 05, 2005 at 09:03:31PM -0500, Jeff Garzik wrote:\n> \n>>2) The \"git-foo\" commands are apparently uncool.  \"git foo ...\" is \n>>preferred.\n> \n> \n> How does e.g. git-diff differ from git diff?  I thought they were\n> equivalent.--b.\n\nThe specific git-diff-XXX command example was longer.\n\nIn general, there is not much difference, except that I was admonished \nto avoid the git-XXX in my howto.  I suppose that makes sense if the \ngit-XXX programs are moved out of $prefix/bin, leaving only $prefix/bin/git.\n\n\tJeff\n"},{"id":"13275","messageId":"4395E125.2050101@codeweavers.com","threadId":"2751","inReplyTo":"4395E01D.4080107@pobox.com","subject":"Re: Wine + GIT","fromName":"Mike McCormack","fromEmail":"mike@codeweavers.com","sentAt":"2005-12-06T19:06:13Z","receivedAt":"2005-12-06T19:06:13Z","isPatch":false,"sender":{"key":"mike@codeweavers.com","avatar":null},"body":"Jeff Garzik wrote:\n\n> In general, there is not much difference, except that I was admonished \n> to avoid the git-XXX in my howto.  I suppose that makes sense if the \n> git-XXX programs are moved out of $prefix/bin, leaving only \n> $prefix/bin/git.\n\nUsing the git-* commands means that tab completion works, which is good \nfor impatient people with bad memories, like myself :)\n\nMike\n"},{"id":"13281","messageId":"43960113.8000209@op5.se","threadId":"2751","inReplyTo":"1133891589.8577.63.camel@cashmere.sps.mot.com","subject":"git shorthands (was: Re: Wine + GIT)","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2005-12-06T21:22:27Z","receivedAt":"2005-12-06T21:22:27Z","isPatch":false,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"Jon Loeliger wrote:\n> \n> That way:\n>     \"git mer\" would fail\n>     \"git merge\" would run \"git-merge\"\n>     \"git merge-\" would fail\n>     \"git merge-o\" would fail,\n>     \"git-merge-oc\" would run \"git-merge-octopus\".\n> \n> Any interest?  Overkill?  Bad idea?\n> \n\nI think it's overkill. It would be better, methinks, to add mnemonic-ish \nshorthands for the porcelainish commands, so that\n\n\tgit fp   => git-format-patch\n\tgit co   => git-checkout\n\tgit up   => git-update-index\n\tgit octo => git-merge-octopus\n\tgit fsck => git-fsck-objects\n\tgit hash => git-hash-object\n\nand so on...\n\n\nThis because non-ambiguous is rarely logical (for git at least, which \nhas 'git-<family>-<action | object-type>) unless one knows the entire \ncommand anyways. Ambiguity may also be introduced by later commands, and \nthen you'll need to re-learn them. I always find that annoying.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"13291","messageId":"20051206230844.GA3876@reactrix.com","threadId":"2751","inReplyTo":"4394F50E.7030803@pobox.com","subject":"Re: Wine + GIT","fromName":"Nick Hengeveld","fromEmail":"nickh@reactrix.com","sentAt":"2005-12-06T23:08:44Z","receivedAt":"2005-12-06T23:08:44Z","isPatch":false,"sender":{"key":"nickh@reactrix.com","avatar":null},"body":"On Mon, Dec 05, 2005 at 09:18:54PM -0500, Jeff Garzik wrote:\n\n> One other comment:  http:// is the slowest of all three transports. \n> git:// (git daemon) is preferred, followed by rsync.\n> \n> http:// takes forever, comparatively.\n\nHas that been the general git user experience?  While there are\ncertainly disadvantages to the http transport, I didn't think that\nperformance was one of them.\n\nFor comparison, I ran some clones this morning/afternoon with the\nfollowing results:\n\n\nClone of kernel.org/pub/scm/git/git.git\n\nhttp\nreal    0m24.204s       real    0m25.750s       real    0m24.094s\nuser    0m5.870s        user    0m5.530s        user    0m5.350s\nsys     0m0.660s        sys     0m0.710s        sys     0m0.600s\n\nrsync\nreal    1m3.952s        real    1m3.417s        real    1m4.360s\nuser    0m0.090s        user    0m0.130s        user    0m0.120s\nsys     0m0.210s        sys     0m0.230s        sys     0m0.210s\n\ngit\nreal    0m54.715s       real    0m55.928s       real    0m56.411s\nuser    0m0.980s        user    0m0.980s        user    0m1.040s\nsys     0m0.220s        sys     0m0.140s        sys     0m0.160s\n\n\nClone of kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git\n\nhttp\nreal    4m59.959s       real    5m28.512s       real    6m9.109s\nuser    1m38.400s       user    1m34.350s       user    1m35.700s\nsys     0m7.640s        sys     0m8.180s        sys     0m7.510s\n\nrsync\nreal    19m47.218s      real    19m46.739s      real    21m41.875s\nuser    0m3.960s        user    0m4.260s        user    0m4.000s\nsys     0m5.060s        sys     0m4.680s        sys     0m4.860s\n\ngit\nreal    19m43.014s      real    19m36.692s      real    20m43.277s\nuser    0m23.180s       user    0m23.070s       user    0m23.230s\nsys     0m8.210s        sys     0m8.590s        sys     0m11.240s\n\n-- \nFor a successful technology, reality must take precedence over public\nrelations, for nature cannot be fooled.\n"},{"id":"13292","messageId":"43961E7B.3000607@op5.se","threadId":"2751","inReplyTo":"20051206230844.GA3876@reactrix.com","subject":"Re: Wine + GIT","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2005-12-06T23:27:55Z","receivedAt":"2005-12-06T23:27:55Z","isPatch":false,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"Nick Hengeveld wrote:\n> On Mon, Dec 05, 2005 at 09:18:54PM -0500, Jeff Garzik wrote:\n> \n> \n>>One other comment:  http:// is the slowest of all three transports. \n>>git:// (git daemon) is preferred, followed by rsync.\n>>\n>>http:// takes forever, comparatively.\n> \n> \n> Has that been the general git user experience?\n\n\nIt certainly is for me, and I know most of my colleagues think so too.\n\n\n>  While there are\n> certainly disadvantages to the http transport, I didn't think that\n> performance was one of them.\n> \n> For comparison, I ran some clones this morning/afternoon with the\n> following results:\n> \n\nWhen you clone you need to get all the objects. If the objects aren't \npacked on the remote end (which is usually the case), the git protocol \nwill pack them for you which takes quite some time for a large repo and \nputs the server under considerable stress.\n\nWhen you pull incrementally the native git protocol does some figuring \nout of the minimum set of packs it needs to send you.\n\n> \n> Clone of kernel.org/pub/scm/git/git.git\n> \n> http\n> real    0m24.204s       real    0m25.750s       real    0m24.094s\n> user    0m5.870s        user    0m5.530s        user    0m5.350s\n> sys     0m0.660s        sys     0m0.710s        sys     0m0.600s\n> \n> rsync\n> real    1m3.952s        real    1m3.417s        real    1m4.360s\n> user    0m0.090s        user    0m0.130s        user    0m0.120s\n> sys     0m0.210s        sys     0m0.230s        sys     0m0.210s\n> \n> git\n> real    0m54.715s       real    0m55.928s       real    0m56.411s\n> user    0m0.980s        user    0m0.980s        user    0m1.040s\n> sys     0m0.220s        sys     0m0.140s        sys     0m0.160s\n> \n\n\nIn general, rsync:// should be the fastest protocol to clone over. Why \nyou got the numbers listed above I have no idea, but I'm guessing the \nrsync daemon was under quite a bit of stress. http could in that case be \nfaster since apache handles multiple clients better than rsync, but only \nif you're on a very fast line with low round trip time to the server as \nit needs to do a lot of downloading and checking to see where it's at \nand what it needs.\n\nYou may also want to take notice of the fact that the git-daemon can use \ncached pack-files, in which case it doesn't have to do so much manual \npacking. If cache-files are present, the git protocol *should* be the \nfastest to clone over as well.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"13303","messageId":"E6BEDA9B-561F-4D25-8406-77B688B66546@hawaga.org.uk","threadId":"2751","inReplyTo":"1133891589.8577.63.camel@cashmere.sps.mot.com","subject":"Re: Wine + GIT","fromName":"Ben Clifford","fromEmail":"benc@hawaga.org.uk","sentAt":"2005-12-07T00:56:16Z","receivedAt":"2005-12-07T00:56:16Z","isPatch":false,"sender":{"key":"benc@hawaga.org.uk","avatar":"https://gravatar.com/avatar/c7ce083471287f8e77b69dd147f757799d1efdd740727fd7e3003f33e88be898?d=mp&s=160"},"body":"\nOn 7 Dec 2005, at 04:53, Jon Loeliger wrote:\n\n> On Tue, 2005-12-06 at 11:39, J. Bruce Fields wrote:\n>\n>> I've enjoyed getting tab completions without having to add whatever's\n>> required to my .bashrc to teach it about git subcommands.  Oh well,\n>> I'll\n>> get over it.\n>\n> I believe this effort is already well under way.\n> Uh, I also thought we were going to place it in\n> some \"contrib\" directory too...?\n>\n\nThe (latest as of now) code for cogito is in cogito's contrib/  \ndirectory.\n\nYou can get stg,cogito,git,gitk completion code from my repo with:\n\n  cg clone http://www.hawaga.org.uk/gitcompletion.git\n\n(I posted a note about it the other day on this git list, entitled  \n'bash completions code for git+porcelain)\n\n\n-- \nBen • ベン • Бэн • 벤 • 班明\nhttp://www.hawaga.org.uk/ben/\nMy email is high latency but best way to contact me. Alternatively,  \nSMS number(s) at above URL.\n"}]}