Added support for fossil SCM, added recipe for vc-fossil.el, a VC backend for the fossil sofware configuration management system

This commit is contained in:
Dieter Deyke 2014-07-07 11:56:33 +02:00
parent 5f576f6fab
commit 263f420437
7 changed files with 37 additions and 8 deletions

View file

@ -173,7 +173,7 @@ the following form (`[...]` denotes optional or conditional values),
```lisp
(<package-name>
:fetcher [git|github|bzr|hg|darcs|svn|cvs|wiki]
:fetcher [git|github|bzr|hg|darcs|fossil|svn|cvs|wiki]
[:url "<repo url>"]
[:repo "github-user/repo-name"]
[:module "cvs-module"]
@ -183,11 +183,11 @@ the following form (`[...]` denotes optional or conditional values),
- `package-name`
a lisp symbol that has the same name as the package being specified.
- `:fetcher` (one of `git, github, bzr, hg, darcs, svn, cvs, wiki`)
- `:fetcher` (one of `git, github, bzr, hg, darcs, fossil, svn, cvs, wiki`)
specifies the type of repository that `:url` points to. Right now
package-build supports [git][git], [github][github],
[bazaar (bzr)][bzr], [mercurial (hg)][hg], [subversion (svn)][svn],
[cvs][cvs], [darcs][darcs], and [Emacs Wiki (wiki)][emacswiki] as
[cvs][cvs], [darcs][darcs], [fossil][fossil], and [Emacs Wiki (wiki)][emacswiki] as
possible mechanisms for checking out the repository.
*package-build* uses
@ -204,7 +204,7 @@ differs from the package name being built.
- `:url`
specifies the URL of the version control repository. *required for
the `git`, `bzr`, `hg`, `darcs`, `svn` and `cvs` fetchers.*
the `git`, `bzr`, `hg`, `darcs`, `fossil`, `svn` and `cvs` fetchers.*
- `:repo` specifies the github repository and is of the form
`github-user/repo-name`. *required for the `github` fetcher*.
@ -249,6 +249,7 @@ specified package requires more complex file specification.
[svn]: http://subversion.apache.org/
[cvs]: http://www.nongnu.org/cvs/
[darcs]: http://darcs.net/
[fossil]: http://www.fossil-scm.org/
[emacswiki]: http://www.emacswiki.org/

View file

@ -31,7 +31,7 @@
<h1><span class="archive-name">MELPA</span> (Milkypostmans Emacs Lisp Package Archive)</h1>
<ul>
<li>Up-to-date packages built on our servers from upstream source</li>
<li>Installable in any recent Emacs using 'package.el' - no need to install svn/cvs/hg/bzr/git/darcs etc.</li>
<li>Installable in any recent Emacs using 'package.el' - no need to install svn/cvs/hg/bzr/git/darcs/fossil etc.</li>
<li>Curated - no obsolete, renamed, forked or randomly hacked packages</li>
<li>Comprehensive - more packages than any other archive</li>
<li>Automatic updates - new commits result in new packages</li>

View file

@ -419,7 +419,7 @@
m("section.jumbotron", [
m("ul", [
m("li", m.trust("<strong>Up-to-date packages built on our servers from upstream source</strong>")),
m("li", m.trust("<strong>Installable in any recent Emacs using 'package.el'</strong> - no need to install svn/cvs/hg/bzr/git/darcs etc.")),
m("li", m.trust("<strong>Installable in any recent Emacs using 'package.el'</strong> - no need to install svn/cvs/hg/bzr/git/darcs/fossil etc.")),
m("li", m.trust("<strong>Curated</strong> - no obsolete, renamed, forked or randomly hacked packages")),
m("li", m.trust("<strong>Comprehensive</strong> - more packages than any other archive")),
m("li", m.trust("<strong>Automatic updates</strong> - new commits result in new packages")),

View file

@ -110,7 +110,7 @@
<p><a href="https://github.com/milkypostman/melpa">https://github.com/milkypostman/melpa</a></p>
<p>
Contributions are welcome. Currently, the builder supports
packages using git, subversion, mercurial, bzr, cvs, darcs and
packages using git, subversion, mercurial, bzr, cvs, darcs, fossil and
emacswiki.
</p>
</section>

View file

@ -323,6 +323,32 @@ seconds; the server cuts off after 10 requests in 20 seconds.")
(pb/find-parse-time
"\\([a-zA-Z]\\{3\\} [a-zA-Z]\\{3\\} \\( \\|[0-9]\\)[0-9] [0-9]\\{2\\}:[0-9]\\{2\\}:[0-9]\\{2\\} [A-Za-z]\\{3\\} [0-9]\\{4\\}\\)")))))
(defun pb/fossil-repo (dir)
"Get the current fossil repo for DIR."
(pb/run-process-match "\\(.*\\)" dir "fossil" "remote-url"))
(defun pb/checkout-fossil (name config dir)
"Check package NAME with config CONFIG out of fossil into DIR."
(unless package-build-stable
(let ((repo (plist-get config :url)))
(with-current-buffer (get-buffer-create "*package-build-checkout*")
(cond
((and (file-exists-p (expand-file-name ".fslckout" dir))
(string-equal (pb/fossil-repo dir) repo))
(pb/princ-exists dir)
(pb/run-process dir "fossil" "pull"))
(t
(when (file-exists-p dir)
(delete-directory dir t))
(pb/princ-checkout repo dir)
(make-directory dir)
(pb/run-process dir "fossil" "clone" repo "repo.fossil")
(pb/run-process dir "fossil" "open" "repo.fossil")))
(pb/run-process dir "fossil" "timeline" "--limit" "1" "--type" "ci" "--width" "0")
(or (pb/find-parse-time
"=== \\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} ===\n[0-9]\\{2\\}:[0-9]\\{2\\}:[0-9]\\{2\\}\\) ")
(error "No valid timestamps found!"))))))
(defun pb/svn-repo (dir)
"Get the current svn repo for DIR."
(pb/run-process-match "URL: \\(.*\\)" dir "svn" "info"))
@ -571,6 +597,7 @@ Optionally PRETTY-PRINT the data."
"--exclude=CVS"
"--exclude=.git*"
"--exclude=_darcs"
"--exclude=.fslckout"
"--exclude=.bzr"
"--exclude=.hg"
(or (mapcar (lambda (fn) (concat dir "/" fn)) files) (list dir))))

1
recipes/vc-fossil Normal file
View file

@ -0,0 +1 @@
(vc-fossil :fetcher fossil :url "http://chiselapp.com/user/venks/repository/emacs-fossil/" :files ("vc/el/*.el" "doc/*"))

View file

@ -10,7 +10,7 @@ sudo ${SUDOENV} apt-get update
sudo ${SUDOENV} apt-get -y upgrade
sudo ${SUDOENV} apt-get -y \
install \
subversion git cvs darcs curl bzr mercurial \
subversion git cvs darcs fossil curl bzr mercurial \
emacs24 emacs24-el emacs24-common-non-dfsg \
tmux make