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 ```lisp
(<package-name> (<package-name>
:fetcher [git|github|bzr|hg|darcs|svn|cvs|wiki] :fetcher [git|github|bzr|hg|darcs|fossil|svn|cvs|wiki]
[:url "<repo url>"] [:url "<repo url>"]
[:repo "github-user/repo-name"] [:repo "github-user/repo-name"]
[:module "cvs-module"] [:module "cvs-module"]
@ -183,11 +183,11 @@ the following form (`[...]` denotes optional or conditional values),
- `package-name` - `package-name`
a lisp symbol that has the same name as the package being specified. 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 specifies the type of repository that `:url` points to. Right now
package-build supports [git][git], [github][github], package-build supports [git][git], [github][github],
[bazaar (bzr)][bzr], [mercurial (hg)][hg], [subversion (svn)][svn], [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. possible mechanisms for checking out the repository.
*package-build* uses *package-build* uses
@ -204,7 +204,7 @@ differs from the package name being built.
- `:url` - `:url`
specifies the URL of the version control repository. *required for 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 - `:repo` specifies the github repository and is of the form
`github-user/repo-name`. *required for the `github` fetcher*. `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/ [svn]: http://subversion.apache.org/
[cvs]: http://www.nongnu.org/cvs/ [cvs]: http://www.nongnu.org/cvs/
[darcs]: http://darcs.net/ [darcs]: http://darcs.net/
[fossil]: http://www.fossil-scm.org/
[emacswiki]: http://www.emacswiki.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> <h1><span class="archive-name">MELPA</span> (Milkypostmans Emacs Lisp Package Archive)</h1>
<ul> <ul>
<li>Up-to-date packages built on our servers from upstream source</li> <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>Curated - no obsolete, renamed, forked or randomly hacked packages</li>
<li>Comprehensive - more packages than any other archive</li> <li>Comprehensive - more packages than any other archive</li>
<li>Automatic updates - new commits result in new packages</li> <li>Automatic updates - new commits result in new packages</li>

View file

@ -419,7 +419,7 @@
m("section.jumbotron", [ m("section.jumbotron", [
m("ul", [ m("ul", [
m("li", m.trust("<strong>Up-to-date packages built on our servers from upstream source</strong>")), 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>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>Comprehensive</strong> - more packages than any other archive")),
m("li", m.trust("<strong>Automatic updates</strong> - new commits result in new packages")), 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><a href="https://github.com/milkypostman/melpa">https://github.com/milkypostman/melpa</a></p>
<p> <p>
Contributions are welcome. Currently, the builder supports 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. emacswiki.
</p> </p>
</section> </section>

View file

@ -323,6 +323,32 @@ seconds; the server cuts off after 10 requests in 20 seconds.")
(pb/find-parse-time (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\\}\\)"))))) "\\([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) (defun pb/svn-repo (dir)
"Get the current svn repo for DIR." "Get the current svn repo for DIR."
(pb/run-process-match "URL: \\(.*\\)" dir "svn" "info")) (pb/run-process-match "URL: \\(.*\\)" dir "svn" "info"))
@ -571,6 +597,7 @@ Optionally PRETTY-PRINT the data."
"--exclude=CVS" "--exclude=CVS"
"--exclude=.git*" "--exclude=.git*"
"--exclude=_darcs" "--exclude=_darcs"
"--exclude=.fslckout"
"--exclude=.bzr" "--exclude=.bzr"
"--exclude=.hg" "--exclude=.hg"
(or (mapcar (lambda (fn) (concat dir "/" fn)) files) (list dir)))) (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 upgrade
sudo ${SUDOENV} apt-get -y \ sudo ${SUDOENV} apt-get -y \
install \ install \
subversion git cvs darcs curl bzr mercurial \ subversion git cvs darcs fossil curl bzr mercurial \
emacs24 emacs24-el emacs24-common-non-dfsg \ emacs24 emacs24-el emacs24-common-non-dfsg \
tmux make tmux make