User Tools

Site Tools


projects:projects

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
projects:projects [2026/06/04 21:28] – [List of Projects] jhagstrandprojects:projects [2026/06/16 03:27] (current) – [End Branch] jhagstrand
Line 19: Line 19:
  
 [[projects:minimal:minimal]] - html, css, javascript for a minimal web app [[projects:minimal:minimal]] - html, css, javascript for a minimal web app
 +
  
 === Apps === === Apps ===
  
 [[projects:homepage:homepage]] - homepage for voyc.com [[projects:homepage:homepage]] - homepage for voyc.com
 +
 +[[projects:pokerface:pokerface]] - facial expressions of artificial feelings
  
 [[projects:geo:geo]] - geopolitics map drawing [[projects:geo:geo]] - geopolitics map drawing
Line 57: Line 60:
  
 [[projects:timeline:timeline]] - timeline [[projects:timeline:timeline]] - timeline
 +
 +[[projects:voyc:voyc]] - leftover from when geo/global was voyc.com
  
 [[https://docs.google.com/spreadsheets/d/19pIRXgSPT8AFUTCPh-eTPc8Ej9RInxtj518fo-t2HVs/edit?usp=sharing | projects checklist sheet]] [[https://docs.google.com/spreadsheets/d/19pIRXgSPT8AFUTCPh-eTPc8Ej9RInxtj518fo-t2HVs/edit?usp=sharing | projects checklist sheet]]
Line 65: Line 70:
  
 =====Developer Guidelines===== =====Developer Guidelines=====
 +
 +==== Tab Indents ====
 +
 +Always use the tab character to indent.
  
 ====.gitignore==== ====.gitignore====
Line 73: Line 82:
   css.min   css.min
   index.php   index.php
 +  RELEASES.md
 ==== Duplicate Content ==== ==== Duplicate Content ====
  
Line 175: Line 184:
   git pull origin master   git pull origin master
   git push gitlab master   git push gitlab master
 +
 +==== voyc release management ====
 +
 +Trends in release management as of 2026.
 +  * 50/72 rule. A commit message has three lines (title, blank, body).  The first line is the title and it is 50 characters long.  The second line is blank.  The third and subsequent lines make up the body; they are bullets, and they are 72 characters long.  [Ed. title is my word.  Other people say description or subject.]
 +  * Conventional Commits.  The first line of the commit message is prefixed with a category: feat, fix, perf, style, refactor, test, build, chore.  This rule overrides an earlier rule that the title should be capitalized.
 +  * Semantic Versioning.  Each release is numbered major.minor.patch, like 14.3.5. When a development group breaks backward compatibility, now a normalized behavior, they assign a new major number.  When a bug is discovered that is so dangerous it must be fixed immediately, they release a patch.
 +
 +{{https://en.wikipedia.org/wiki/Conventional_Commits_Specification | more on Conventional Commits}}\\
 +[[https://semver.org/ | more on Semantic Versioning]] \\
 +[[https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html | Tim Pope: A Note About Git Commit Messages, 2008.]]\\
 +
 +At voyc we use these above trends in commit messages and tag messages.  The log of commit messages is detailed for developers.  The list of tag messages is more abstract, for users and managers.  Release histories are generated by script from the list of tag messages.
 +
 +At deployment, a file named RELEASES.md is generated from the tag messages by a script.  It is not committed; it listed in .gitignore.
 +
 +[[..:git | more about log and tag]]
 +
 +  # All tags with their full messages, most recent first
 +  git tag -l --sort=-version:refname | xargs -I{} git show {} --no-patch --pretty=format:"%tag %*%(tag)%n%s%n%b%n---"
 +  
 +  git for-each-ref --sort=-version:refname --format="%(refname:short)%0a%(contents)%0a---" refs/tags
 +
 +
 +Practices:
 +  * Commits made only in feature branch.  Never on the master branch.
 +  * We let aider auto-commit every change.
 +  * At merge, we generally keep the detailed commits, but squash is optional.
 +  * The commit log is for developers.
 +  * At release, we create a tag, observing SemVer, with hand-written message.
 +  * Public release history is generated from the tag messages.
 +  * Conventional commits types are used only on the commit messages, not the tag messages.
 +
 +
 +==== One-time Fix Privacy in Log ====
 +
 +  # in laptop dev repo
 +  git checkout fixlog
 +  git filter-repo --mailmap .mailmap --force
 +  
 +  git checkout master
 +  git merge fixlog
 +  git branch -d fixlog
 +  
 +  git push origin master --force --tags   # push to bare repo
 +  git push gitlab master --force --tags   # push to gitlab
 +
 +==== Start Branch ====
 +  git branch peaceful
 +
 +==== Save Work ====
 +  # save work
 +  git checkout peaceful
 +  git push origin peaceful     # push feature branch to bare repo
 +  
 +==== End Branch ====
 +  git checkout master
 +  git merge --squash peaceful
 +  git commit -m 'squashed hand-written commit message'
 +  git branch -D peaceful    # after squash the big -D force is required
 +  git push origin master     # push master to bare repo
 +  git push origin --delete peaceful  # delete feature branch from bare repo
 +
 +==== Deploy ====
 +
 +  git tag v0.2.0 -m'...'  # fancy hand-written tag message will become part of release history
 +  
 +  git push origin master --tags
 +  git push gitlab master --tags
 +  
 +  # in production webserver
 +  git fetch origin
 +  git reset --hard origin/master
 +  
 +  git push gitlab master --tags
  
projects/projects.1780622885.txt.gz · Last modified: 2026/06/04 21:28 by jhagstrand

Except where otherwise noted, content on this wiki is licensed under the following license: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki