Updated the templates with more explanations.

This commit is contained in:
Yann Esposito (Yogsototh) 2018-08-28 22:52:30 +02:00
parent 385b4530d9
commit 47d8f2b194
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646
5 changed files with 141 additions and 14 deletions

View file

@ -3,6 +3,8 @@
* Goal
Principle: put project management info along the repository not in some DB.
The goal is to have most features that github provide but using only text files
and git.
Typically solve the problem that github is fully centralized.

9
gpm
View file

@ -24,16 +24,19 @@ debug cmd = do
initIssues :: IO ()
initIssues = do
echo "* issue.org"
output "issues.org" (input ("templates" </> "issues.org"))
input ("templates" </> "issues.org")
& output "issues.org"
initDocs :: IO ()
initDocs = do
echo "* wiki.org"
output "wiki.org" (input ("templates" </> "wiki.org"))
input ("templates" </> "wiki.org")
& output "wiki.org"
initReview :: IO ()
initReview = do
let fic = "reviews" </> "write-contributing-yogsototh.org"
mktree "reviews"
putText $ format ("* "%fp) fic
output fic (input ("templates" </> "review.org"))
input ("templates" </> "review.org")
& output fic

View file

@ -4,7 +4,9 @@
#+PROPERTY: ASSIGNEE
#+PROPERTY: REVIEWERS
#+PROPERTY: BRANCH
#+SEQ_TODO: REVIEW(r) FEEDBACK(f) TODO(t) STARTED(s) WAITING(w) | DONE(d) CANCELLED(c) DEFERRED(f)
#+SEQ_TODO: FEEDBACK(f) TODO(t) STARTED(s) WAITING(w) LGTM(l) | DONE(d) CANCELLED(c) DEFERRED(f)
#+SEQ_TODO: REVIEW(r) | MERGED(m) ABORTED(a)
#+SEQ_TODO: ACCEPTED(l) CHANGE_REQUESTED(c) | REFUSED(r)
#+COLUMNS: %38ITEM(Details) %TAGS(Context) %7TODO(To Do) %8ASSIGNEE %5Effort(Time){:}
#+TAGS: bug(b) doc(d) ops(o)
@ -23,23 +25,70 @@ And think about properties to manages meta datas such as:
- branch (the branch asked for a review before merge)
* Basic Usages
The basic usage is to simply create the todo list. The reviewers could simply
add sub items to provide remarks or even other todos.
** TODO Do thing 3
** STARTED Do thing 2
** DONE Do thing 1
CLOSED: [2018-08-28 Tue 22:37]
* Issues
** REVIEW Write a CONTRIBUTING file :doc:
If you use ~org-sort~ it will put the REVIEW task on top.
Then FEEDBACK (when you simply need to ask questions).
** REVIEW Basic review process
:PROPERTIES:
:BRANCH: explain-review-process
:ASSIGNEE: yogsototh
:REVIEWERS: shubby
:END:
So basically the reviewer should write his review here. As the reviewer should
switch branch to the working branch the =issues.org= file won't be easy to
reach.
So it is up to the user to create a file =~/.reviews/<branch-name>-<reviewer>.org=
The reviewer then will only need to write down its remarks.
To make things easy you can link the files with their lines using
=file:path/to/file:::NNN=.
Once the review is finished. The reviewer simply need to:
1. switch to the =gpm= branch
2. copy the review file into the =reviews/= directory
3. make a commit aboute the finished review.
The contributor will then be able to copy the content of =reviews/= into
=~/.reviews/=, switch to the branch to be merged, read the review, make fixes,
add comment to the review files, etc...
*** ACCEPTED Review finished
:PROPERTIES:
:REVIEWER: shubby
:END:
Please change something
edit: switched from CHANGE_REQUESTED to ACCEPTED!
**** FEEDBACK Changed!
** MERGED Write a CONTRIBUTING file :doc:
CLOSED: [2018-08-28 Tue 22:51]
:PROPERTIES:
:BRANCH: write-contributing
:ASSIGNEE: dave
:ASSIGNEE: shubby
:REVIEWERS: yogsototh
:END:
*** FEEDBACK yogsototh's review 1
*** ACCEPTED Advanced review workflow explained!
:PROPERTIES:
:REVIEWER: yogsototh
:END:
A simple way to write and read review is to use ~org-annotate-file~.
A simple way to write and read review is to use ~org-capture~.
It will create a file with links to the file your are inspecting in emacs
without modifying the file.
@ -49,7 +98,7 @@ A simple way to achieve this would be to create a reviews directory:
Then in the next section
Use =C-c C-c= to execute that and so you'll see all annotations.
Mainly the reviewer only need to use ~org-annotate-file~ and put the result
Mainly the reviewer only need to use ~org-capture~ and put the result
in =reviews=.
#+NAME: init-reviews
@ -59,21 +108,55 @@ in =reviews=.
(org-with-point-at org-babel-current-src-block-location
(org-entry-get nil prop-name t)))
(defun start-review ()
(defun gen-review-file-name ()
(let* ((branch (get-prop "BRANCH"))
(reviewer (get-prop "REVIEWER"))
(review-file-name (concat branch "-" reviewer ".org"))
(review-file-name ))
(concat branch "-" reviewer ".org")))
(defun start-review ()
"to be called at the beginning of the review"
(let* ((review-file-name (gen-review-file-name))
(review-dir "~/.reviews/")
(local-review (concat "file:../reviews/" review-file-name))
(global-review (concat review-dir review-file-name)))
(url-copy-file local-review global-review)
(setq org-annotate-file-storage-file global-review)))
(setq org-default-notes-file global-review)))
(defun end-review ()
"to be call when the reviewer ends its review."
(let* ((review-file-name (gen-review-file-name))
(review-dir "~/.reviews/")
(local-review (concat "file:../reviews/" review-file-name))
(global-review (concat review-dir review-file-name)))
(url-copy-file global-review local-review)
(setq org-default-notes-file global-review)))
#+END_SRC
1. Start by using =C-c C-c= here.
2. Switch to the issue branch.
3. If you just want to read the review open the =(gen-review-file-name)=
4. If you want to add a remark use =org-capture= to open the org file that will
contain your remarks with a link to the line and file.
I think to make it easier all member of the team should put their projects
in the same place. Typically =~/dev/project-name=.
#+BEGIN_SRC elisp
(concat "[[~/.reviews/" (gen-review-file-name) "]]")
#+END_SRC
#+RESULTS:
: [[~/.reviews/write-contributing-yogsototh.org]]
#+BEGIN_SRC elisp :results silent
(start-review)
#+END_SRC
#+BEGIN_SRC elisp :results silent
(end-review)
#+END_SRC
** TODO [#B] Write a tutorial :doc:
Should contains a complete tutorial
** WAITING [#A] Write Install section in README :ops:doc:
@ -84,6 +167,6 @@ Explain how to install the project
** DONE Write README file :doc:
The goal is to write a text file with all informations about the project
Dave: @Alex should I write a subtitle?
Alex: @Dave I think you can"
Shubby: @Alex should I write a subtitle?
Alex: @Shubby I think you can"

View file

@ -2,3 +2,23 @@
Remove the direct usage of the file inside and prefer to load templates. If
possible compressed one.
#+BEGIN_SRC elisp
(org-remember-insinuate)
(define-key global-map "\C-cr" 'org-remember)
(setq org-remember-templates
'(("Code Review High" ?h "* TODO [#A] %?\n %i\n %a" "~/Review.org" "Issues")
("Code Review Medium" ?m "* TODO [#B] %?\n %i\n %a" "~/Review.org" "Issues")
("Code Review Low" ?l "* TODO [#C] %?\n %i\n %a" "~/Review.org" "Issues")
("Code Review Question" ?? "* TODO %?\n %i\n %a" "~/Review.org" "Questions")))
(defun my/linenum()
"Use line number as the file linking item"
;; Optionally, predicate this technique to
;; only certain modes
;; e.g.
;; (when (eq major-mode 'cperl-mode) ...
(number-to-string (org-current-line)))
(add-hook 'org-create-file-search-functions
'my/linenum)
#+END_SRC

19
templates/wiki.org Normal file
View file

@ -0,0 +1,19 @@
#+Title: Git Project Management Wiki
#+Author: Your Name <your email>
Put all documentation here.
If the documentation start to grow too much.
Do not hesitate to create directories and link those file in this
main entry point.
* Project
** Description
** Contribute
*** Issues
To write a new issue switch to the ~gpm~ branch and add it to ~issues.org~ file.
*** Code Review
To write a code review for the branch ~foo~ if you are the user ~johndoe~ simply create a
file named ~reviews/foo-johndoe.org~ in the ~gpm~ branch.
To help you write your review you should use [[https://orgmode.org/manual/Capture.html][org-capture]]