[implementations-list] style; VCS
Hello Vegard, some oh-so-helpful remarks from me again! 1. (defvar vimpulse-state-vars-alist '((vi-state . ((id . viper-vi-state-id) (basic-mode . viper-vi-basic-minor-mode) (basic-map . viper-vi-basic-map) [...] In lisp, '(<object> . <list>) is the same as '(<object> <list>) (with an exception of <list> being `nil' of course, if you want to be really anal), so you don't need some of those dots in there. 2. ;; Viper's definition lacks an indentation specification (defmacro viper-deflocalvar (var default-value &optional documentation) "Define VAR as a buffer-local variable. DEFAULT-VALUE is the default value and DOCUMENTATION is the docstring. The variable becomes buffer-local whenever set." (declare (indent defun)) `(progn (defvar ,var ,default-value ,(format "%s\n\(buffer local\)" documentation)) (make-variable-buffer-local ',var))) You don't need to redefine the whole function/macro only to add a docstring or indent spec. You can use the `function-documentation' and `lisp-indent-function' symbol properties for that, i.e. (put 'viper-deflocalvar 'function-documentation "Define VAR as a buffer-local variable. DEFAULT-VALUE is the default value and DOCUMENTATION is the docstring. The variable becomes buffer-local whenever set.") (put 'viper-deflocalvar 'lisp-indent-function 'defun) But actually, wouldn't it make more sense to send a patch for inclusion in Emacs core? Viper could definitely use some affection (btw you didn't reply to my related question in the last mail). Also, have you thought about moving Vimpulse to some usable VCS like Git? It would be soooo much more convenient to even just track the development, not mentioning possible contributions from others. Best wishes, Štěpán
From: [email protected] To: [email protected]
Hello Vegard, some oh-so-helpful remarks from me again!
Great! :)
'( . ) is the same as '( ) (with an exception of being `nil' of course, if you want to be really anal), so you don't need some of those dots in there.
I'm aware of that -- the variables are shown with non-dotted notation when I inspect them with C-h v. The dots are just for emphasizing the "alist inside an alist" structure. However, removing the outermost ones saves some line length, so I've done that in changeset [149].
You don't need to redefine the whole function/macro only to add a docstring or indent spec.
Ah, I didn't know! Fixed in changeset [149].
But actually, wouldn't it make more sense to send a patch for inclusion in Emacs core?
Yes, I intend to contact Michael Kifer as the current code moves forward, as it solves some problems mentioned in viper.el (for some of which he calls for "volunteers").
Also, have you thought about moving Vimpulse to some usable VCS like Git? It would be soooo much more convenient to even just track the development, not mentioning possible contributions from others.
I have never used distributed version control, although I would certainly like to. Git's Windows support is poor, however, so if my only options were Git and SVN, I'd choose SVN. Assembla provides Mercurial + Trac, though. I'm not the maintainer, so it's not my decision to make. Maybe Alessandro (or Jason) will look into it if you explain a little more how a switch would be beneficial. Vegard _________________________________________________________________ Windows 7: Du får hjelp til gjøre mer. Utforsk Windows 7. http://windows.microsoft.com/windows-7
On Thu, Mar 18, 2010 at 09:28:19PM +0000, Vegard Øye wrote:
Also, have you thought about moving Vimpulse to some usable VCS like Git? It would be soooo much more convenient to even just track the development, not mentioning possible contributions from others.
I have never used distributed version control, although I would certainly like to. Git's Windows support is poor, however, so if my only options were Git and SVN, I'd choose SVN.
Hm... there are multiple solutions for Git on Windows, and the support is allegedly much better than in the past, but I have no actual experience with it.
Assembla provides Mercurial + Trac, though.
Yeah, well that would be an option, if it matters to stick with Assembla (Mercurial is horrendous from a Git junkie's point of view, but there's always hg-git for that ;-)).
I'm not the maintainer, so it's not my decision to make. Maybe Alessandro (or Jason) will look into it if you explain a little more how a switch would be beneficial.
Uhm, honestly, Alessandro and Jason are just being (and have been for some time) ridiculous at this point if they perceive themselves as Vimpulse maintainers. I'm not sure what definition of "maintainer" would suit their recent involvement with the project. Štěpán
Date: Thu, 18 Mar 2010 23:22:57 +0100 From: [email protected]
Yeah, well [Mercurial] would be an option, if it matters to stick with Assembla
What's wrong with Assembla?
I'm not the maintainer, so it's not my decision to make.
Uhm, honestly, Alessandro and Jason are just being (and have been for some time) ridiculous at this point if they perceive themselves as Vimpulse maintainers.
I think Jason did a good job as semi-maintainer while Alessandro was busy, but now I haven't heard from either since the release of Vimpulse 0.3.1. I have the administrative privileges to add Mercurial source control, but I think it's too big a decision for me to make alone. The immediate costs, like unfamiliarity and loss of revision history, need to be taken into account as well. Still, I am curious as to why you think it would be "soooo much more convenient" to use something else than SVN. :) While a dozen arguments against SVN can be googled in a heartbeat, what are /your/ reasons for disliking it? I want to know. Vegard _________________________________________________________________ Få nye Windows Live™ Messenger. http://download.live.com/messenger
Bzr is a very good DVCS with an excellent Windows support, great care taken to make transitioning from SVN and general use as easy as possible, flexible workflows and some very usable integration with both SVN and Git. I use it myself for all my projects, and greatly prefer it to Git. Emacs proper uses bzr as well, so you'd have the upstream integration much easier this way. Read more here: http://bazaar.canonical.com/en/ On most Linux distros it's available directly from your package repo. If you want to clone the Emacs repo, make sure you're using the latest version, or at least no older than 2.0; there have been some very significant performance enhancement making it *much* easier to work with projects the size of Emacs. It invalidates the old complaints about clones taking hours; it's now pretty close to being limited by the bandwidth, memory usage is down as well. Cheers, Maciej
From: [email protected] Date: Fri, 19 Mar 2010 10:35:39 +0100
Assembla doesn't provide Bazaar, so to use that we would also have to relocate the project. I'll still need to hear about some serious shortcomings and major gripes with the current choice of SVN before I'll be convinced that a switch is worth it. Vegard _________________________________________________________________ Windows Live™ Mail. Flere kontoer på ett sted. http://download.live.com/wlmail
On Fri, Mar 19, 2010 at 09:10:46AM +0000, Vegard Øye wrote:
Date: Thu, 18 Mar 2010 23:22:57 +0100 From: [email protected]
Yeah, well [Mercurial] would be an option, if it matters to stick with Assembla
What's wrong with Assembla?
Nothing I know of. I.e., I know nothing about Assembla. (BTW, now I looked, they do actually advertise Git, too. Is that a paid service?) There are certainly more options; I didn't mean to imply there was anything wrong with Assembla, esp. if *you* are happy with it (personally I prefer an as simple setup as possible -- just a repository and a public (i.e. not subscribed-only) mailing list; Vimpulse doesn't seem to be a project that would grow as far as to make a bug tracker and all the bells and whistles worth the trouble of being tied to some (proprietary?) provider; but it's the personal preference of the developer(s) that matters, of course).
I'm not the maintainer, so it's not my decision to make.
Uhm, honestly, Alessandro and Jason are just being (and have been for some time) ridiculous at this point if they perceive themselves as Vimpulse maintainers.
I think Jason did a good job as semi-maintainer while Alessandro was busy, but now I haven't heard from either since the release of Vimpulse 0.3.1.
I have the administrative privileges to add Mercurial source control, but I think it's too big a decision for me to make alone. The immediate costs, like unfamiliarity and loss of revision history, need to be taken into account as well.
Yes, sure. My suggestion came partly from my selfish interest, although I do think that having a DVCS repository might provide bigger incentive for possible contributors. As well as ease the development. I don't think you would lose revision history, though, both Git and Mercurial can import SVN repositories AFAIK.
Still, I am curious as to why you think it would be "soooo much more convenient" to use something else than SVN. :) While a dozen arguments against SVN can be googled in a heartbeat, what are /your/ reasons for disliking it? I want to know.
Heh. I guess what I can come up with probably won't surpass your Google search results. With Git it's trivial to have multiple versions of the code and switch between them within a fraction of second (branches). You have all the data locally, so you don't have to query the "master" version just to check out a different version or other operations; it provides nice looking diffs (possibly along with the log message at the same time -- is that possible with SVN? I so, wasn't able to figure it out) etc. etc. Why it would be soooo much more convenient for me (and others I believe) -- now I'm doing this: Actually I managed to make a script that updates the SVN repository and shows me the logs and then only the new diffs since the last update (w00t!! with CVS, I didn't manage to do even that -- if someone knows please do share the trick). But then I still use vimdiff to manually pick the changes I want to my local vimpulse. AFAIK there is no graceful way to do that with SVN (I totally suck at SVN, I never had to really use it, but that's also what I hear). With Git I would simply have my own branch(es) and rebase my changes on top of master, or cherry pick etc. Not speaking about very easy patch generation, stashes, add --interactive, blame taking line range argument, nothing taking annoying amount of time... Some of this is not possible with Mercurial, but as I said, I'd be fine with that, too (although it's certainly a pity everybody's not using Git yet ;-)). Štěpán
Date: Fri, 19 Mar 2010 11:41:39 +0100 From: [email protected]
BTW, now I looked, they do actually advertise Git, too. Is that a paid service?
Git, SVN and Mercurial are free for small projects up to 2 GB.
My suggestion came partly from my selfish interest, although I do think that having a DVCS repository might provide bigger incentive for possible contributors. As well as ease the development.
Yeah, speaking of selfish interest, the main selling point for a distributed version control system is of course that it may make contributing code easier. ("Contributors are the lifeblood of Vimpulse." -- rev. 30 commit message) The main problem with distributed version control as of now is there's too many contenders. Git? Mercurial? Bazaar? Darcs? Monotone? At least everyone's familiar with SVN, and TortoiseSVN is pretty mature (while TortoiseHg has some rough edges by comparison). Git may be confusing to a Mercurial user, and vice versa ... However, I am not saying I am opposed to distributed version control: Mercurial gives everyone a local repository "for free" with which they can do as they like, before sharing their efforts with export (diffs) or push. I run a local SVN server on my machine solely for the purpose of mimicking this, actually.
I don't think you would lose revision history, though, both Git and Mercurial can import SVN repositories AFAIK.
I am the maintainer of viper-in-more-modes.el, so let's do some preliminary tests. Assembla space: http://www.assembla.com/wiki/show/viper-in-more-modes I added Mercurial to the space and ran hg convert http://svn6.assembla.com/svn/viper-in-more-modes hg update to create a local Mercurial repository from SVN. Then, using TortoiseHg's Synchronize screen, I pushed that repository to the official one, below: http://hg.assembla.com/viper-in-more-modes There were some access restrictions initially, but I think they are sorted out now. Would you mind testing the Mercurial repository? Can you tell me if the conversion was successful? Vegard _________________________________________________________________ Nye Windows 7: PCen som passer for deg. Finn ut mer. http://windows.microsoft.com/shop
On Fri, Mar 19, 2010 at 06:21:39PM +0000, Vegard Øye wrote:
Yeah, speaking of selfish interest, the main selling point for a distributed version control system is of course that it may make contributing code easier. ("Contributors are the lifeblood of Vimpulse." -- rev. 30 commit message)
The main problem with distributed version control as of now is there's too many contenders. Git? Mercurial? Bazaar? Darcs? Monotone? At least everyone's familiar with SVN, and TortoiseSVN is pretty mature (while TortoiseHg has some rough edges by comparison). Git may be confusing to a Mercurial user, and vice versa ...
Yeah, well... I already feel kinda ridiculous preaching about Git, but... I really think it pays off, for everyone, to look into Git. Especially because of Git's branches. It's such a delight -- and it's really so simple when you get the basics (which are really simple, too). And of course, nothing beats Git's speed, featureset and reliability out of the box (i.e. in Hg or Bazaar you can get *some* of the functionality using plugins; which may break (I'm speaking from experience here), as they're not (all?) developed with the core). Also, both Hg and Bazaar being written in Python, you can sometimes get bitten by encoding issues (again that's my own experience with Hg). But whatever, you can always praise or bash anything as you like and it might be largely a matter of personal preference. It's Git's branches what makes it really different. Hg's branches are a bad joke in comparison (you can't really have a private branch without committing it and thus recording it in the history forever) -- the recommended Hg workflow is to have multiple repositories instead, which totally sucks in multiple ways (like having to adjust the paths when testing etc.). Bzr might support more workflows, but I think the branch concept is similar to Hg. Fortunately (for Git afficionados) there is an easy way to use Git with Mercurial; not sure about Bzr and Darcs -- I don't think there is currently any easy way.
I am the maintainer of viper-in-more-modes.el, so let's do some preliminary tests. Assembla space:
http://www.assembla.com/wiki/show/viper-in-more-modes
I added Mercurial to the space and ran
hg convert http://svn6.assembla.com/svn/viper-in-more-modes hg update
to create a local Mercurial repository from SVN. Then, using TortoiseHg's Synchronize screen, I pushed that repository to the official one, below:
http://hg.assembla.com/viper-in-more-modes
There were some access restrictions initially, but I think they are sorted out now. Would you mind testing the Mercurial repository? Can you tell me if the conversion was successful?
Yes, looks fine here. Štěpán
Date: Fri, 19 Mar 2010 22:15:04 +0100 From: [email protected]
Especially because of Git's branches. It's such a delight -- and it's really so simple when you get the basics (which are really simple, too).
Heh. In all the "Git vs. Mercurial" discussions I've read so far, Git users hail Git's branching as the best thing since sliced bread, while Mercurial users complain about the difficulty of understanding Linus-thought. :) I would like to use Git. I really would. I have one and only one objection against it, and that's (what I hear is) poor Windows support. (Before you ask, I'd rather run Linux on my machine, but it's not possible.) But let's try. viper-in-more-modes is our testbed again: git://git.assembla.com/viper-in-more-modes.git To convert from SVN, I typed the following commands: git svn clone --stdlayout http://svn6.assembla.com/svn/viper-in-more-modes git remote add origin [email protected]:viper-in-more-modes.git git push origin master There was a stumbleblock: to get Git + Trac instead of Assembla's ticket system, I had to delete and recreate viper-in-more-mode's space and then choose the desired configuration. (Alessandro and Jason, you have been re-invited.) I think all of Trac's tickets can be exported to a file so that this can be done without any loss, although hopefully we can get an Assembla admin to help out instead if we decide to make the switch with Vimpulse. Vegard _________________________________________________________________ Windows 7: Se direkte-TV fra den bærbare PCen. Finn ut mer. http://windows.microsoft.com/windows-7
On Sat, Mar 20, 2010 at 02:42:28PM +0000, Vegard Øye wrote:
I would like to use Git. I really would. I have one and only one objection against it, and that's (what I hear is) poor Windows support. (Before you ask, I'd rather run Linux on my machine, but it's not possible.)
Right... Unfortunately I can't really offer much help in that respect; I also don't know how your Windows workflow looks like -- e.g. if you used Cygwin, then you could use Git in Cygwin roughly the same way you would on Linux (I guess :)). Other than that, the "Git on Windows" page on the Git wiki <https://git.wiki.kernel.org/index.php/MSysGit:Home> (contents of which are really just the same as the msysGit project home page <http://code.google.com/p/msysgit/>) really seems to suggest that it's still rather for the adventurous, and mentions using Cygwin in case something goes awry (but it might be somewhat dated). You might also have a look at other Git front-ends <https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools>, some of which mention working on Windows -- there is even a Git port of TortoiseSVN.
But let's try. viper-in-more-modes is our testbed again:
git://git.assembla.com/viper-in-more-modes.git
To convert from SVN, I typed the following commands:
git svn clone --stdlayout http://svn6.assembla.com/svn/viper-in-more-modes git remote add origin [email protected]:viper-in-more-modes.git git push origin master
Again, the repo looks fine. Štěpán
Date: Sat, 20 Mar 2010 17:53:16 +0100 From: [email protected]
viper-in-more-modes is our testbed again:
git://git.assembla.com/viper-in-more-modes.git
To convert from SVN, I typed the following commands:
git svn clone --stdlayout http://svn6.assembla.com/svn/viper-in-more-modes git remote add origin [email protected]:viper-in-more-modes.git git push origin master
Again, the repo looks fine.
I'm not sure I got the tag folders right. Am I missing something here? (What's the best folder structure?) Right now there's only a single viper-in-more-modes.el file, while with SVN I had backups of versions 0.1.2 and 0.1.3.
You might also have a look at other Git front-ends <https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools>, some of which mention working on Windows -- there is even a Git port of TortoiseSVN.
Yes, TortoiseSVN is what I use and love, and TortoiseGit is quite similar. It sits on top of msysGit, the Windows port of Git, which I was using when I typed the commands above. msysGit is even kind enough to provide its own Bash shell for when Windows' command line isn't up to the task (e.g., generating SSH keys).
... seems to suggest that it's still rather for the adventurous, and mentions using Cygwin in case something goes awry (but it might be somewhat dated).
Yeah, all the warnings I can find date back to 2008. There are also some recent signs that it works well enough for small projects. Anyway, if things aren't working out, we can always switch to Mercurial. To sum up, there are basically two main issues: * Whether we should switch to distributed version control. The main argument is that Vimpulse might get more contributor love (more egalitarian, more popular, and without the politics of write access). * Whether we should use Git or Mercurial. This isn't that much of an issue, though, since both provide straightforward tools for migrating from one to the other. Based on this, I cast my vote in FAVOR of distributed version control and Git, and wait for Alessandro and Jason to weigh in with their views. Vegard _________________________________________________________________ Windows 7: Se direkte-TV fra den bærbare PCen. Finn ut mer. http://windows.microsoft.com/windows-7
On Sun, Mar 21, 2010 at 12:15:30PM +0000, Vegard Øye wrote:
Again, the repo looks fine.
I'm not sure I got the tag folders right. Am I missing something here? (What's the best folder structure?) Right now there's only a single viper-in-more-modes.el file, while with SVN I had backups of versions 0.1.2 and 0.1.3.
Yeah; actually I noticed that, too, but thought "ok, the data and diffs are there, probably good enough... :P"; and somewhat more importantly, I had no idea how exactly the tags looked like in the original SVN repo (and when I tried to check it out again and compare, I got an error -- I assume you already deleted it?). The Hg version also only shows the 0.1.3 tag (and tip); Hm... actually now I think about it, AFAIK you have to push tags explicitly in Git with the --tags option; there's also --mirror to push everything (all refs and tags) in one go. So you might actually have the tags in your clone from SVN, just haven't pushed them to the remote.
You might also have a look at other Git front-ends <https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools>, some of which mention working on Windows -- there is even a Git port of TortoiseSVN.
Yes, TortoiseSVN is what I use and love, and TortoiseGit is quite similar. It sits on top of msysGit, the Windows port of Git, which I was using when I typed the commands above. msysGit is even kind enough to provide its own Bash shell for when Windows' command line isn't up to the task (e.g., generating SSH keys).
... seems to suggest that it's still rather for the adventurous, and mentions using Cygwin in case something goes awry (but it might be somewhat dated).
Yeah, all the warnings I can find date back to 2008. There are also some recent signs that it works well enough for small projects. Anyway, if things aren't working out, we can always switch to Mercurial.
Great.
To sum up, there are basically two main issues:
* Whether we should switch to distributed version control. The main argument is that Vimpulse might get more contributor love (more egalitarian, more popular, and without the politics of write access).
* Whether we should use Git or Mercurial. This isn't that much of an issue, though, since both provide straightforward tools for migrating from one to the other.
Based on this, I cast my vote in FAVOR of distributed version control and Git, and wait for Alessandro and Jason to weigh in with their views.
We'll be holding our breaths then (thanks to John Foerch for support!) ;). Štěpán
On Fri, Mar 19, 2010 at 09:10:46AM +0000, Vegard Øye wrote:
Still, I am curious as to why you think it would be "soooo much more convenient" to use something else than SVN. :) While a dozen arguments against SVN can be googled in a heartbeat, what are /your/ reasons for disliking it? I want to know.
Vegard
For my 2 cents, I am also a big fan of distributed version control, and git in particular. I use git for a largish project, a web browser in fact, and its flexibility is just delightful. On workflow criteria alone, it can do everything that hg and bzr can, plus, and probably faster. It doesn't get in the way by prescribing a particular workflow; instead it provides all the tools to support whatever your style of development, and opens possibilities for better workflows to fit each situation. One of the joys of distributed version control is that it frees you from having to send patches back and forth via email when collaborating with other people. (You can still do that if you want to of course.) A contributer just makes a publicly available clone, and gives you the pull url. You can then follow their progress, and cherry-pick their history as needed. Git has a staging area for commits. This decouples your changes from your commit, meaning that if you have several projects underway, you don't need to split up your work into separate branches if you don't want to. Because there is a staging area, you can still make small, single-feature commits, even if your working tree has other changes that you aren't ready to commit. The two areas where hg and bzr may be competitive are multiplatform support and *maybe* learning curve. But for my part, it would be a hard sell to convince me to give up git's flexibility for such cosmetics. For more evangelism ;) see http://whygitisbetterthanx.com/ -- John Foerch
participants (4)
-
John J. Foerch -
Maciej Katafiasz -
Vegard Øye -
Štěpán Němec