portable: release 0.78

sync files from diff.git 29c010c8648ec861ee463bc8fa8c66a64dd01154 This brings in a build fix for OpenBSD/sparc64.

changelog markup fix

bump version number

CHANGES for 0.78

fix free() of wrong address in gotweb's parse.y Found by sthen via ports-gcc: gotweb/parse.y:504:3: warning: attempt to free a non-heap object 'file'

remove casts which make older gcc versions unhappy ../lib/diffreg.c:44: error: initializer element is not constant ../lib/diffreg.c:51: error: initializer element is not constant ../lib/diffreg.c:59: error: initializer element is not constant ../lib/diffreg.c:66: error: initializer element is not constant reported by Red on Libera IRC, and by sthen@ who pointed out such failures appearing in landry's sparc64 bulk build logs.

fix reference counting of raw objects opened via privsep helpers Such objects were never closed, resulting in memory and file descriptor leaks.

visit gotctl folder during make obj, release, and clean

do not hint at empty temporary diff files in the log message buffer ok op@

ensure that files are in a state where a diff can be created, before diffing ok op@

use a global flag instead of a per-file flag to detect staged changes ok op@

use mkstemps(3) instead of mkstemp(3) for opening named temporary files Allows 'got commit' to use a ".diff" suffix for temporary diff files. ok op@

provide a diff of changes in a temp file while editing a commit log message ok landry@

bump checkout_ulimit_n test file descriptor limit a bit; failure seen on arm64

sync dist file list

use a subshell to avoid changing the global ulimit; suggested by op@

respect resource limit for number of open files when sizing the pack file cache ok op@

add respect_exportok flag, defaulting to off allows to hide repositories if they have the magic git-daemon-export-ok file ok op@ tracey@ stsp@

gotd: propagate confpath to children as well otherwise they end up running with default config which isn't ideal. ok stsp@

awk ftw! no need to grep, awk can filter lines by itself ok stsp@

change example to use useradd; ok stsp@

send a newline first if erroring out in plaintext mode otherwise, the webserver might complain: 'upstream sent invalid header: "gotwebd\x20..." while reading response header from upstream' ok stsp@

require space between commit author name and email, for Git compatibility Allowing such author fields breaks 'got send' towards Github for affected commits because git-index-pack --strict will error out on the server: $ git index-pack --strict pack-de791fb6a3a1961e44ac5d98d72fd533bf9277c8.pack error: object 5d6bde9eaaf27f41ae8fa7112bb45e489d3c16b9: missingSpaceBeforeEmail: invalid author/committer line - missing space before email fatal: fsck error in packed object problem encountered by landry@ ok op@

avoid incomplete writes of pack file data in got-send-pack