The short answer is Fossil... or whatever feels good to you :-). The longer answer...
I've used both Redmine/Git and Fossil in commercial environments to manage projects internally. I'm also using Fossil exclusively to manage my student projects in the university at which I teach. Redmine, like many such products is OK, but it really is just a bit glue holding other disjoint projects together for you. Managing it is NOT difficult, but you MUST manage it as a part of your ongoing process. Fossil, on the other hand, requires virtually no management (at the server level) once you get it going. To be clearer, when I administered Redmine, we had a regularly updated repository of scripts, configuration files, and other assets we used to administer our Redmine installation (all under Redmine control, of course). When I started using Fossil, my experience guided me to create a similar project. The difference is that instead of regularly updating this project as things changed (as I had with my Redmine admin repo), I have made only 5 commits to the equivalent Fossil project over the last two years, even though I update the Fossil executable itself with greater regularity. Because Fossil is a single source/executable with all the features you mentioned integrated (not even "integrated" so much as "architecturally intimate"), my administration overhead has been effectively zero.
Also, I just LOVE using fossil from the command line in a way I never did with Git or Mercurial or Subversion (all of which are good tools). From my perspective as an engineer, Fossil's focus appears to be on the things you will do approximately 99% of the time, and many other things (reasonable things, that is) are possible without difficulty. That is a focus I greatly appreciate.
I should note I don't think Fossil is close to perfect, but it IS a great tool and has shifted my perspective on source code management, and that is a big deal to me.