Friday, November 9, 2007

Git impressions, part 1

To give some news on git (as I said, I started playing with it):

I've pulled in the opensim repository with the changes via git-svn (the whole business is around 200mb - not sure if the SVN storage is much better), branched off the release where my previous experimental code was, put the diff there, and rebased that branch off the latest version (200+ commits ahead). RL things do take their time, so the resolution of the merge conflicts (around 5-6 places) was merely into successful compile - rather than something working. But the whole process was very quick.

Given that the "commits" into the git go locally - IMHO this makes it very viable at the very least as a local "helper" platform for better flexibility, complementary to SVN. One can do many tasks at once in separate branches - switching between them is a breeze.

As a wholesale deal - I've also installed some beast called "qgit" - the gui to browse/search commits (separate package). allows to browse the changes fairly quickly.

I am quite pleased so far - although this is indeed quite basic usage, will need to see bit more how it works out.

The rebase today (reapplying the changes I made yesterday, onto the today's fresh checkout) went without any need for manual intervention, with a single command:

$ git-checkout teleport
Switched to branch "teleport"
$ git-svn rebase
M OpenSim/Region/ClientStack/ClientView.API.cs
M OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
M OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
r2304 = 23102815f47624d6f0cba0274302e11e010d9245 (git-svn)
M bin/OpenSimAssetSet.xml
r2305 = 1739baaedcd750ff768014289470f89769d625d7 (git-svn)
M bin/OpenSimAssetSet.xml
r2306 = 19566b7e39ec001b572e1bb730b5a9878e486b48 (git-svn)
M OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
M OpenSim/Region/Physics/Manager/PhysicsActor.cs
M OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
M OpenSim/Region/Environment/Scenes/ScenePresence.cs
r2307 = 1cf771ea6af379fd6ea461f91c640551313298fc (git-svn)
M OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
r2308 = 78ea566a282cd58a91a29d0d1f24db2a282dc70e (git-svn)
M OpenSim/Region/ClientStack/ClientView.PacketQueue.cs
r2309 = a693db9165ca881b94e971df25754c3eda6ab557 (git-svn)
M OpenSim/Framework/Communications/LoginService.cs
r2310 = d05e6d59e7fe4562f18f227caf72ae7b200de0ae (git-svn)
M OpenSim/Framework/Communications/LoginService.cs
r2311 = fe0cbbc15634d38380c25314990d23ccab26dc3c (git-svn)
M OpenSim/Region/ClientStack/ClientView.cs
r2312 = 8796cd87cd32b4c38ee34db5cd2674f3c25457cc (git-svn)
M OpenSim/Region/ClientStack/ClientView.cs
r2313 = 6cbec5269c486c0f502c55e665a62dd93f78bc33 (git-svn)
M OpenSim/Region/ClientStack/ClientView.cs
r2314 = 6ed08cd9f685740920ccb3f252571dd19ed71db5 (git-svn)
M OpenSim/Region/ClientStack/ClientView.cs
r2315 = 6ffbf70e55f31ae30e834ed947c27b9012f8af0c (git-svn)
M OpenSim/Region/ClientStack/ClientView.cs
r2316 = 87155e023edd3d9ae6482bd4cbf1c1a606b6a824 (git-svn)
First, rewinding head to replay your work on top of it...
HEAD is now at 87155e0... * Protip: Commit AFTER compiling.

Applying Some teleport code

Adds trailing whitespace.
.dotest/patch:25: public IInterDomainCommunications InterDomain
Adds trailing whitespace.
Adds trailing whitespace.
.dotest/patch:136: *
Adds trailing whitespace.
.dotest/patch:173: public bool InformOfArrival(string magicCookie, ulong regionHandle, AgentCircuitData agentData, LLVector3 position, bool isFlying)
Adds trailing whitespace.
.dotest/patch:175: if (OnArrival != null)
warning: squelched 7 whitespace errors
warning: 12 lines add whitespace errors.
Wrote tree 515a3b62544b5313f4693e3b00a4b778f3a36714
Committed: cfcc3fc5b25dc25f18caa1c9295c7eceac77c44b

Applying Fix the failed build (restructured namespace)

Wrote tree 3768941bd8fd7d2d1e8f0a240f3cc34433b59348
Committed: bb5771d7e1ec4901e737bab48d3cbe8a0eb79e49

(this little log also highlights some git cleverness about the whitespace changes - which is very good thing to have).


Gryc said...

Gotta say, cheap, local repositories are quite nice, especially for exploratory work.

But, my favorite thing about git is that it doesnt track files, it tracks the actual code _inside_ the files.

Dalien said...

Yeah, that part I'll still need to investigate.. But it's still not syntax-aware, right ? so it is merely seeing some "foobar" moving around - and as soon as foobar looks the same shape and color, it thinks it's the same thing ?