tools: simplify changelog process, make changes-show in each package
[ci skip]
This commit is contained in:
		
							parent
							
								
									f12093c446
								
							
						
					
					
						commit
						ed256f1dd8
					
				
							
								
								
									
										121
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										121
									
								
								Makefile
									
									
									
									
									
								
							| @ -1183,69 +1183,76 @@ site/manual2-1.md: site/manual-start.md site/manual-end.md $(MANPAGES) \ | |||||||
| # too hard, see Shake.hs
 | # too hard, see Shake.hs
 | ||||||
| 
 | 
 | ||||||
| ########################
 | ########################
 | ||||||
| # 2017 changelog process
 | # 2017 changelog process: 
 | ||||||
| # make help-changenotes
 | # at release time, for each package: (cd PKG; make changes-show > CHANGES.draft.org), edit, move to CHANGES
 | ||||||
| 
 |  | ||||||
| # Commit messages are periodically appended to this org outline,
 |  | ||||||
| # and before release it is edited down to make the package changelogs
 |  | ||||||
| # (hledger*/CHANGES) and release notes (site/release-notes.md).
 |  | ||||||
| # The notes for past releases are kept in the outline,
 |  | ||||||
| # in case they might come in handy again.
 |  | ||||||
| # It is not specific to any particular branch, and not tracked with git.
 |  | ||||||
| CHANGENOTES=CHANGENOTES.org |  | ||||||
| 
 | 
 | ||||||
| LASTTAG=$(shell git describe --tags --abbrev=0) | LASTTAG=$(shell git describe --tags --abbrev=0) | ||||||
| 
 | 
 | ||||||
| # The last git revision referenced in the change notes. 
 | changes-show: \ | ||||||
| # (Or, if there are no change notes, the last tag.
 | 		$(call def-help,changes-show, show commits affecting the current directory excluding any hledger package subdirs from the last tag as org nodes newest first ) | ||||||
| # Tries hard to be warning free and run shell commands only when needed.)
 | 	@make changes-show-from-$(LASTTAG) | ||||||
| CHANGENOTESLASTREV=$(subst %,,$(subst %%,$(LASTTAG),%$(shell [ -f $(CHANGENOTES) ] && (grep -E '^[a-f0-9]{8}$$' $(CHANGENOTES) | tail -1) )%)) |  | ||||||
| 
 | 
 | ||||||
| # create change notes file if it doesn't exist.. shouldn't happen much.
 | changes-show-from-%: \ | ||||||
| $(CHANGENOTES): | 		#$(call def-help,changes-show-from-REV, show commits affecting the current directory excluding any hledger package subdirs from this git revision onward as org nodes newest first ) | ||||||
| 	@make changenotes-start | 	@git log --abbrev-commit --pretty=format:'ORGNODE %s (%an)%n%b%h' $*.. -- . ':!hledger' ':!hledger-*' \
 | ||||||
| 
 | 		| sed -e 's/^\*/-/' -e 's/^ORGNODE/*/' \
 | ||||||
| changenotes-start: \ |  | ||||||
| 		$(call def-help,changenotes-start, add a new outline named after $(VERSIONFILE) in $(CHANGENOTES). Run after bumping $(VERSIONFILE). ) |  | ||||||
| 	@(\
 |  | ||||||
| 		echo "* change notes for hledger-$(VERSION)" ;\
 |  | ||||||
| 		echo "** hledger-lib" ;\
 |  | ||||||
| 		echo "** hledger" ;\
 |  | ||||||
| 		echo "** hledger-ui" ;\
 |  | ||||||
| 		echo "** hledger-web" ;\
 |  | ||||||
| 		echo "** hledger-api" ;\
 |  | ||||||
| 		echo "** hledger-install" ;\
 |  | ||||||
| 		echo "** project" ;\
 |  | ||||||
| 		) >>$(CHANGENOTES) |  | ||||||
| 
 |  | ||||||
| # TODO problem: this only checks the last (bottom-most) git rev in the
 |  | ||||||
| # change notes file, so after manual editing has begun this may re-add
 |  | ||||||
| # commits which are already in the file.
 |  | ||||||
| changenotes-update: $(CHANGENOTES) \ |  | ||||||
| 		$(call def-help,changenotes-update, add any not-yet-added(*) commits to $(CHANGENOTES). Run periodically (* it may get this wrong once manual editing has begun). ) |  | ||||||
| 	@make changenotes-show-from-$(CHANGENOTESLASTREV) >>$(CHANGENOTES) |  | ||||||
| 	@echo "Latest items in $(CHANGENOTES):" |  | ||||||
| 	@make changenotes-show | tail -10 |  | ||||||
| 	@make changenotes-show-last |  | ||||||
| 
 |  | ||||||
| changenotes-update-from-%: \ |  | ||||||
| #		$(call def-help,changenotes-update-from-REV, add commits from this git revision onward to $(CHANGENOTES) )
 |  | ||||||
| 	@make changenotes-show-from-$* >>$(CHANGENOTES) |  | ||||||
| 
 |  | ||||||
| changenotes-show-from-%: \ |  | ||||||
| #		$(call def-help,changenotes-show-from-REV, show commits from this git revision onward as org nodes )
 |  | ||||||
| 	@git log --abbrev-commit --reverse --pretty=format:'ORGNODE %s (%an)%n%b%h' $*.. \
 |  | ||||||
| 		| sed -e 's/^\*/-/' -e 's/^ORGNODE/***/' \
 |  | ||||||
| 		| sed -e 's/ (Simon Michael)//' | 		| sed -e 's/ (Simon Michael)//' | ||||||
| 
 | 
 | ||||||
| changenotes-show: $(CHANGENOTES) \ | # old:
 | ||||||
| 		$(call def-help,changenotes-show, show all the org headlines recorded in $(CHANGENOTES) ) | ## The last git revision referenced in the change notes. 
 | ||||||
| 	@cat $(CHANGENOTES) | grep '*' | ## (Or, if there are no change notes, the last tag.
 | ||||||
| 
 | ## Tries hard to be warning free and run shell commands only when needed.)
 | ||||||
| # git l is a local alias with output like "2017-08-16 0a0e6d18 tools: make help-SECTION (HEAD -> master)"
 | #CHANGENOTESLASTREV=$(subst %,,$(subst %%,$(LASTTAG),%$(shell [ -f $(CHANGENOTES) ] && (grep -E '^[a-f0-9]{8}$$' $(CHANGENOTES) | tail -1) )%))
 | ||||||
| changenotes-show-last: $(CHANGENOTES) \ | #
 | ||||||
| 		$(call def-help,changenotes-show-last, show the last commit recorded in $(CHANGENOTES) ) | ## create change notes file if it doesn't exist.. shouldn't happen much.
 | ||||||
| 	@git l -1 $(CHANGENOTESLASTREV) | #$(CHANGENOTES):
 | ||||||
|  | #	@make changenotes-start
 | ||||||
|  | #
 | ||||||
|  | #changenotes-template:
 | ||||||
|  | #	@(\
 | ||||||
|  | #		echo "* change notes for hledger-$(VERSION)" ;\
 | ||||||
|  | #		echo "** hledger-lib" ;\
 | ||||||
|  | #		echo "** hledger" ;\
 | ||||||
|  | #		echo "** hledger-ui" ;\
 | ||||||
|  | #		echo "** hledger-web" ;\
 | ||||||
|  | #		echo "** hledger-api" ;\
 | ||||||
|  | #		echo "** hledger-install" ;\
 | ||||||
|  | #		echo "** project" ;\
 | ||||||
|  | #		echo "** unsorted" ;\
 | ||||||
|  | #		)
 | ||||||
|  | #
 | ||||||
|  | #changenotes-start: \
 | ||||||
|  | #		$(call def-help,changenotes-start, add a new outline named after $(VERSIONFILE) in $(CHANGENOTES). Run after bumping $(VERSIONFILE). )
 | ||||||
|  | #	@make changenotes-template >>$(CHANGENOTES)
 | ||||||
|  | #
 | ||||||
|  | ## TODO problem: this only checks the last (bottom-most) git rev in the
 | ||||||
|  | ## change notes file, so after manual editing has begun this may re-add
 | ||||||
|  | ## commits which are already in the file.
 | ||||||
|  | #changenotes-update: $(CHANGENOTES) \
 | ||||||
|  | #		$(call def-help,changenotes-update, add any not-yet-added(*) commits to $(CHANGENOTES). Run periodically (* it may get this wrong once manual editing has begun). )
 | ||||||
|  | #	@make changenotes-show-from-$(CHANGENOTESLASTREV) >>$(CHANGENOTES)
 | ||||||
|  | #	@echo "Latest items in $(CHANGENOTES):"
 | ||||||
|  | #	@make changenotes-show | tail -10
 | ||||||
|  | #	@make changenotes-show-last
 | ||||||
|  | #
 | ||||||
|  | #changenotes-update-from-%: \
 | ||||||
|  | ##		$(call def-help,changenotes-update-from-REV, add commits from this git revision onward to $(CHANGENOTES) )
 | ||||||
|  | #	@make changenotes-show-from-$* >>$(CHANGENOTES)
 | ||||||
|  | #
 | ||||||
|  | #changenotes-show-from-%: \
 | ||||||
|  | ##		$(call def-help,changenotes-show-from-REV, show commits from this git revision onward as org nodes )
 | ||||||
|  | #	@git log --abbrev-commit --reverse --pretty=format:'ORGNODE %s (%an)%n%b%h' $*.. \
 | ||||||
|  | #		| sed -e 's/^\*/-/' -e 's/^ORGNODE/***/' \
 | ||||||
|  | #		| sed -e 's/ (Simon Michael)//'
 | ||||||
|  | #
 | ||||||
|  | #changenotes-show: $(CHANGENOTES) \
 | ||||||
|  | #		$(call def-help,changenotes-show, show all the org headlines recorded in $(CHANGENOTES) )
 | ||||||
|  | #	@cat $(CHANGENOTES) | grep '*'
 | ||||||
|  | #
 | ||||||
|  | ## git l is a local alias with output like "2017-08-16 0a0e6d18 tools: make help-SECTION (HEAD -> master)"
 | ||||||
|  | #changenotes-show-last: $(CHANGENOTES) \
 | ||||||
|  | #		$(call def-help,changenotes-show-last, show the last commit recorded in $(CHANGENOTES) )
 | ||||||
|  | #	@git l -1 $(CHANGENOTESLASTREV)
 | ||||||
| 
 | 
 | ||||||
| ###############################################################################
 | ###############################################################################
 | ||||||
| $(call def-help-subheading,RELEASING:) | $(call def-help-subheading,RELEASING:) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user