They don't take long at all actually. Just need to have 2 separate directories. One where our development code sits and is updated when we need, and one for the distribution code. Which is usually untouched until an update is needed, then I run the patch command as so:
diff -uNbB --exclude-from=diffexcludes.txt afkmud/src dist3/src >> diff.txt
Don't ask me what the uNbB part does, I took that from an example command someone else's patch file used. The excludes argument is just a text file with source files that you don't want added to the update. Target directory is afkmud/src, and the source to pull the updates from is dist3/src. The output is dumped to diff.txt, which is the patch file you see. This command takes mere seconds to process
Patching it in obviously doesn't workk 100% which is why you get "hunks" that fail, which usually result in *.rej files with the portions that failed. Look for one of those for save.c since that warning should not be coming up and will cause problems with pet saving.