Dustin Sallings wrote: > > On Feb 8, 2008, at 20:33, dormando wrote: > >> Half of the committers use git, half use hg, and none of them like SVN! >> What a pain. I spent an hour earlier reading hg/git comparisons too. >> It's maddening how little it matters anymore (most reviews were pre-git >> 1.5, and pre-merc 0.9). > > > I've seen lots of people using git for their own work, but not > enough using it in a distributed fashion. I've been asking questions > about how to collaborate with git, but I can't seem to find any git > experts who will answer questions.
Omfg, I'm so glad you actually asked questions! :) So far I've just been reading stuff like "Well they both worked the same, but had some odd quirks, so we picked (mercurial|git)!" > For example, a coworker was working from home today and couldn't get > his crap cisco vpn working. Instead, he punched a hole in his firewall > and typed ``hg serve'' so I could grab work he was doing and send him > work everyone else was doing. I bet that's the same as my crap cisco vpn! > > serve, bundle, export, import, incoming, and outgoing don't seem to > have equivalences in git. I'll do this backwards, and just at a glance: I'll read more when I'm feeling better. incoming/outgoing: If I _think_ I understand these right, you can actually sometimes git diff with the second repo as an argument. That'll show the differences since the target repo/branch (git diff . /path/to/other/repo#branch), which will be incoming or outgoing. That'll show the raw changes... for showing the difference in changeset, you can do a: git log --since HEAD origin ... if origin were the remote repo. If you don't have the latest changes, fetch more, rebase your repo on top of that, then git log --since will show you what you have to upload. I think my knowledge on how to do this in git is a bit dated, so I'll go read (I started with git in 0.99 series, where it was missing most of these fancy "usability features", so sometimes I do things the hard way still). Otherwise you can use git fetch to "pull" the remote changes into a branch but not apply anywhere, then use git log with relative commit ids to show the changesets (with -p to show the full changes!) Unless I'm getting my wires crossed and this is a patch management thinger, in that case it's 'git format-patch' and 'git am' (although there's an alternative to am). export: Appears to be git log --pretty=[format] [-p] ? bundle: git bundle, same feature. push/pull accept bundles too, it seems. serve: You got me here. I've been doing the "scp a bare repo up to my webhost, run a script to prep it for http pull's" thing. Usually takes a few minutes if I don't forget what to do, and the basic tutorials show how to do this. No built in webbrick a-like though. I guess that's twistd? Or something? Dunno, that's pretty swanky, but my laptop doesn't usually have direct internet access so I upload it to my webhost anyway. Mercurial does appear to work better with pushing things around, while git is primarily pull oriented. I don't mind the loss there, pushing between distributed repos is kinda crazy. Or maybe I just haven't used hg enough. > I've contributed changes to both git and hg projects and haven't had > good luck submitting changes upstream. I'd be interesting in talking > to people who collaborate on projects using git both as first and > second-level contributors to see if their experiences are any better > than mine. I don't doubt that I may be doing it wrong. I've spread git within a company of 15+ developers (now way more? I hope) to replace SVN. Slow adoption at first but they love it, and were having very severe performance problems. I think a bunch of the ruby folk use git? We should have someone who can say a word or two about it? > Should memcached choose git, it may be as simple as putting up a > page that says, ``this is how you clone, this is how you work, this is > how you submit your changes back.'' > I've been stuck in the stone-age with git apparently! Every time I go read the tutorials I find four other commands I don't need to run anymore. It looks like with 1.4 or 1.5+ all you need to do is clone, do some git remote's, and 'git pull' until you're bored. Then rebase your branch on top of origin, and git-format-patch a patch series. Or shove your repo up with http accessability and tell someone to pull. In which case I'd add a remote for their repo and pull into a branch. Anyway, I'm totally glad you asked because it finally gave me something to look up. Brian once asked about bundle, but I had yet to find a difference :) -Dormando
