portable perspectives

a blog about programming, life, universe and everything

darcs pull vs git pull

I mean, I'm not going to say that you should use $VCS1 over $VCS2, I'm not proficient enough with either. I just think that:

rff@ut:~/ramaze$ darcs pull
Pulling from \"http://manveru.mine.nu/ramaze\"...

Wed Sep 12 14:52:55 CEST 2007  Michael Fellinger <mail@foo.com>
  * Adding path for OSX to tool/tidy and improve readability of the spec for it a bit.
Shall I pull this patch? (1/1)  [ynWvpxqadjk], or ? for help: v
[Adding path for OSX to tool/tidy and improve readability of the spec for it a bit.
Michael Fellinger <mail@foo.com>**20070912125255] {
hunk ./lib/ramaze/tool/tidy.rb 18
+        /usr/lib/libtidy.dylib
hunk ./spec/ramaze/tidy.rb 10
-    Ramaze::Tool::Tidy.tidy(\"<html></html>\").should =~ %r{<html>\\s+<head>\\s+<meta name=\"generator\" content=\"HTML Tidy (.*?)\" />\\s+<title></title>\\s+</head>\\s+<body></body>\\s+</html>}
+    Ramaze::Tool::Tidy.tidy(\"<html></html>\").
+      should =~ %r{<html>\\s+<head>\\s+<meta name=\"generator\" content=\"HTML Tidy (.*?)\" />\\s+<title></title>\\s+</head>\\s+<body></body>\\s+</html>}
}

Wed Sep 12 14:52:55 CEST 2007  Michael Fellinger <mail@foo.com>
  * Adding path for OSX to tool/tidy and improve readability of the spec for it a bit.
Shall I pull this patch? (1/1)  [ynWvpxqadjk], or ? for help: y
Finished pulling and applying.


is slightly more clear than:

rff@ut:~/rubinius$ git pull
Fetching refs/heads/master from http://git.rubini.us/code using http
got 2fb92489ed4a0e58ea3d941a6f2ff8c7b8b44c2d
walk 2fb92489ed4a0e58ea3d941a6f2ff8c7b8b44c2d
got 6ae85832a699f3048ee260d9091aacc05c686fe4
got 6c0e0e63c0bb5979e2dd2b3df6e511b031656ef4
walk 6c0e0e63c0bb5979e2dd2b3df6e511b031656ef4
Getting alternates list for http://git.rubini.us/code
Getting pack list for http://git.rubini.us/code
Getting index for pack cf217ebdaa4f745cc827450e9cac23ec258d45f9
Getting pack cf217ebdaa4f745cc827450e9cac23ec258d45f9
 which contains cf987cd736618331bf421603c1491030b0fc8e35

got c77671cc8a43049bd61dd22f13fbbbc1ab4f96ec
... many more.. 
got 933282575047f8924edc6cc426c0a234bdbe16a3
* refs/remotes/origin/master: fast forward to branch \'master\' of http://git.rubini.us/code
  old..new: e85ecf8..2fb9248
Updating e85ecf8..2fb9248

Fast forward
 .gitignore                            |    1 +
 Makefile                              |    2 +-
 bin/sirb.rb                           |    1 -
 compiler/bytecode/compiler.rb         |   22 +-
 compiler/bytecode/primitive_names.rb  |    2 +-
 compiler/bytecode/rubinius.rb         |    1 +
 compiler/bytecode/system_hints.rb     |   20 +-
 compiler/translation/local_scoping.rb |    7 +-
 compiler/translation/normalize.rb     |   24 ++
 compiler/translation/states.rb        |   30 ++-
 kernel/core/compile.rb                |    6 +-
 kernel/core/compiled_method.rb        |    7 +-
 kernel/core/context.rb                |   26 ++-
 kernel/core/io.rb                     |    3 +
 kernel/core/string.rb                 |   91 ++++++--
 lib/bin/compile.rb                    |  176 ++++++++++++---
 lib/bin/sirb.rb                       |   22 +-
 lib/ext/syck/build.rb                 |    6 +
 lib/ext/syck/rbxext.c                 |   12 +-
 lib/stringio.rb                       |  413 +++++++++++++++++++++++++++++++++
 runtime/bootstrap.rba                 |  Bin 29758 -> 29986 bytes
 runtime/compiler.rba                  |  Bin 79208 -> 81314 bytes
 runtime/core.rba                      |  Bin 162952 -> 168854 bytes
 runtime/loader.rbc                    |  Bin 12565 -> 12651 bytes
 shotgun/lib/cpu.h                     |   13 +-
 shotgun/lib/cpu_primitives.c          |   18 ++
 shotgun/lib/cpu_task.c                |   11 +
 shotgun/lib/instructions.rb           |   13 +-
 shotgun/lib/methctx.c                 |    5 +-
 shotgun/lib/methctx.h                 |    2 +-
 shotgun/lib/primitives.rb             |   75 +++----
 spec/mini_rspec.rb                    |    8 +-
 32 files changed, 849 insertions(+), 168 deletions(-)
 delete mode 120000 bin/sirb.rb
 create mode 100644 lib/ext/syck/build.rb
 create mode 100644 lib/stringio.rb

But, hei, maybe it's just me :)

See all comments

Using darcs with FTP and without SSH

darcs is my favourite Version Control System. I'm not chris and I have not tried a lot of them, but I just love darcs' cherry picking so everything that misses that is out of my list. Maybe monotone or subversion 1.5 would be interesting.

Anyway, my only issue with darcs is that it does not allow pushing changes to a dumb repository, where dumb means ftp.

Since I don't have ssh access on all my hostings I found the solution in sitecopy which is a nifty utility to keep a remote directory in sync with a local one by doing incremental uploads.

To use this simply install sitecopy (which is probably avilable through your linux/bsd flavour package manager) and create a file ~/.sitecopyrc with a content like this:


site myproject
  server  ftp.myserver.com
  remote  /www/darcs.myserver.com/myproject
  local   /path/to/local/repository
  username  joe
  password  123

and to create a directory ~/.sitecopy. The permission mask for the dir must be 0700 and for the rc file it must be 0600, otherwise sitecopy will complain about insecure files.

At this point you just need to init the remote repository by doing sitecopy --init myproject. It may take some time because the first time you'll be uploading all the old patches in the _darcs/ directory, but the next time you will do this, using sitecopy --update myproject it will be quite fast.

Obviously this approach works nicely only in a single-user environment, because if multiple users share the remote directory there will be inconsistencies, but it is useful to keep your copy of a projects' repository where you can have your patches and where you can point people that want them.

See all comments

AddThis Social Bookmark Button