Message ID | 20200311151137.32198-1-jboy@bius.moe |
---|---|
State | Accepted |
Headers | show |
Series | [bug#40025] Add gitless package definition. | expand |
Context | Check | Description |
---|---|---|
cbaines/comparison | success | View comparision |
cbaines/git branch | success | View Git branch |
cbaines/applying patch | success | View Laminar job |
John, Thanks for the patch! Guix uses a specific commit message format. It's partially documented in ‘(guix)Submitting Patches’ but you're IMO better off just reading the git history to get a feel for it. Here's the commit message for this package: gnu: Add gitless. * gnu/packages/version-control.scm (gitless): New public variable. Co-authored-by: Tobias Geerinckx-Rice <me@tobias.gr> I've written down my comments below, but you don't need to send a V2. I'll try to make it work here and will push a modified version if I succeed. It would be nice if I could get rid of propagation, and the path to a (non-native) git still needs to be embedded so the user doesn't need to install git themselves. > + (uri (git-reference > + (url "https://github.com/gitless-vcs/gitless") > + (commit (string-append "v" version)))) This is missing the FILE-NAME field. Without it, the source is checked out into /gnu/store/<hash>-checkout/ which makes it harder to see what's what. Adding (file-name (git-file-name name version)) puts it in /gnu/store/<hash>-gitless-<version>-checkout. > + (substitute* "requirements.txt" > + (("pygit2==") "pygit2>=")) This has no effect on the end result so I suggest we drop it again. > + (synopsis > + "A version control system built on top of Git") Synopses shouldn't start with an article. Tip: running ‘./pre-inst-env guix lint gitless’ will catch things like this. It also caught the missing FILE-NAME. It also printed several warnings about using tabs instead of spaces. Guix does not use tabs in Scheme code. > + (description > + "A version control system built on top of Git") This is waaay too short, I told you that before :-p Moreover, descriptions should consist of complete sentences. I've knocked something together based on the home page blurb: Gitless is a Git-compatible version control system that aims to be easy to learn and use. It simplifies the common workflow by committing changes to tracked files by default and saving any uncommitted changes as part of a branch. The friendly @command{gl} command-line interface gives feedback and helps you figure out what to do next. Gitless is implemented on top of Git and its commits and repositories are indistinguishable from Git's. You (or other contributors) can always fall back on @command{git}, and use any regular Git hosting service. Kind regards, T G-R
Tobias Geerinckx-Rice via Guix-patches via 写道: > I'll try to make it work here and will push a modified version > if I > succeed. It would be nice if I could get rid of propagation, > and the > path to a (non-native) git still needs to be embedded so the > user > doesn't need to install git themselves. Done and done. I added a copyright line for you and (using this package) pushed this to master as f930814afae8e20125dab58b060a691ea8398e26. Thanks! T G-R
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 52626f8076..7aac933d15 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -2373,3 +2373,53 @@ interrupted, published, and collaborated on while in progress.") videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server.") (license license:expat))) + +(define-public gitless + (package + (name "gitless") + ;; The PyPI package lacks the test suite, so we build it directly from the + ;; git repository. + (version "0.8.8") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gitless-vcs/gitless") + (commit (string-append "v" version)))) + (sha256 + (base32 "048kl27zjr68hgs70g3l98ci9765wxva6azzrhcdys7nsdd493n6")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'build 'loosen-requirements + (lambda _ + (substitute* "setup.py" + ;; Don't insist on an older version of pygit2. + (("pygit2==") "pygit2>=")) + (substitute* "requirements.txt" + (("pygit2==") "pygit2>=")) + #t)) + (add-before 'check 'prepare-for-tests + (lambda _ + ;; Find the 'gl' command. + (rename-file "gl.py" "gl") + (setenv "PATH" (string-append (getcwd) ":" (getenv "PATH"))) + ;; The tests try to run git as if it were already set up. + (setenv "HOME" (getcwd)) + (invoke "git" "config" "--global" "user.email" "git@example.com") + (invoke "git" "config" "--global" "user.name" "guix") + #t))))) + (native-inputs + ;; Required for tests. + `(("git-minimal" ,git-minimal))) + (propagated-inputs + `(("python-clint" ,python-clint) + ("python-pygit2" ,python-pygit2) + ("python-sh" ,python-sh))) + (home-page "https://gitless.com") + (synopsis + "A version control system built on top of Git") + (description + "A version control system built on top of Git") + (license license:expat)))