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/12 09:07] – [voyc release management] jhagstrandprojects:projects [2026/06/16 03:27] (current) – [End Branch] jhagstrand
Line 70: Line 70:
  
 =====Developer Guidelines===== =====Developer Guidelines=====
 +
 +==== Tab Indents ====
 +
 +Always use the tab character to indent.
  
 ====.gitignore==== ====.gitignore====
Line 78: Line 82:
   css.min   css.min
   index.php   index.php
 +  RELEASES.md
 ==== Duplicate Content ==== ==== Duplicate Content ====
  
Line 188: Line 192:
   * 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.   * 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://en.wikipedia.org/wiki/Conventional_Commits_Specification | more on Conventional Commits}}\\
 [[https://semver.org/ | more on Semantic Versioning]] \\ [[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.]]\\ [[https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html | Tim Pope: A Note About Git Commit Messages, 2008.]]\\
Line 196: Line 200:
 At deployment, a file named RELEASES.md is generated from the tag messages by a script.  It is not committed; it listed in .gitignore. 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]] +[[..:git | more about log and tag]]
-Here are some ways developers can use log and tag commands.+
  
-# All tags with their full messages, most recent first +  # 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 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
  
-git for-each-ref --sort=-version:refname \ +==== Deploy ====
-  --format="%(refname:short)%0a%(contents)%0a---"+
-  refs/tags+
  
 +  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.1781269653.txt.gz · Last modified: 2026/06/12 09:07 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