I use swaret to keep my desktop machine up with slackware-current because I am too lazy to do everything manually. I haven't tried any others so can't comment on superiority. That's not why I'm posting.
If you want to sync with patches for the -stable (i.e. currently 9.1) tree, then swaret will not break your system unless you add new repositories that have unofficial packages in them. Just make double sure and run a lilo (if you use lilo) after a kernel update. In this instance, install swaret and customise /etc/swaret.conf as you see fit (don't add new repositories) then to update, run:
# swaret --update && swaret --upgrade -a
Just doing this for the -stable branch should be fine, because packages are more or less static (none removed/added) after release.
If you want to sync to -current, you must realise the tree is having packages added and removed on a near daily basis. What this means is that more recent package builds may rely on newly added dependencies, which you will need to add yourself. What I do is check http://www.slackware.com/changelog/current.php?cpu=i386
for the word 'added' on any packages since my last update. For example on Jun 02 rzip was added. I don't know if any scripts on new packages will rely on that package, so I added it. Take these steps:
# swaret --update
# swaret --install rzip
# swaret --install xyz other new-packages
# swaret --upgrade -a
Another thing many people probably forget is to replace scripts and config files that have updated.
Let's say samba gets updated and the config file layout has changed. If you upgrade to the latest version, swaret will not overwrite your precious smb.conf but will put a new file in called smb.conf.new. This probably confused some people when it updated from 2.x to 3.x a while back because some flags changed a little and lazy people (like me) don't like having to reconfigure everything again.
Anyway, if you have not customised a config file or script then you can just rename smb.conf.new to smb.conf.
To find these sort of files after an --upgrade, check here:
# ls /etc/*new
# ls /etc/rc.d/*new
# ls /etc/*/*new
and rename them like this (for example):
# cd /etc/rc.d
# mv -iv rc.S.new rc.S
# cd /next/directory/with/.new/files
# mv -iv whatever.new whatever
Obviously make sure you really haven't updated those files yourself or something might not work (but that doesn't mean it's broken
Hope that helps