Upcoming memcached releases + rambling.

dormando dormando at rydia.net
Sat Feb 9 08:28:45 UTC 2008


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


More information about the memcached mailing list