We're in the wet-dry tropics, which means we get a bit of every type of weather every once in a while. It goes from heavy tropical downpours, to drizzle and all in-between, from months without end of blue skies and scorching sun, to weeks when we're fogged in without getting much rain at all. Our terrain is mountainous, with some semi flat areas and with some steep slopes. So our approach is: a bit of everything...
We started with swales and dams, but they are only helpful with those heavy downpours (for us about 30 mm per hour or more qualifies as those). We had a lot of heavy rains our first year, and then suddenly only some in the years after. The dams have only been full for 2 out of the 6 years we've been here. Without heavy rain we don't get a lot of runoff, so we needed a more diverse approach.
We chose terraces as our main approach. They work absolutely great with both small rains and the big storms. Surprisingly that's mainly because digging these terraces loosened the soil and broke up impermeable layers so now it takes up the water better. We do need to keep them mulched, because bare soil will close up again and then we get runoff again instead of infiltration. Downside of terraces is the amount of work! Backbreaking when done by hand! But worth it in my view. Or you bring in an excavator, they can make terraces very quickly, but you have to stay on top of the operator so he doesn't compact your terraces driving all over them! Let him figure out how to do it with only driving over the slope once, before shaping the terrace!
The garden needs a more regular supply of water, especially during the dry season. We are now experimenting with digging in half-rotten tree trunks about 20 cm under the surface of the garden beds. These seem to increase the amount of moisture the soil holds. If you try this, please make sure that excess rainwater in case of big storms can flow away, so you don't create pools which might make the logs float to the surface. We also placed our chicken coop next to the garden to catch the water from the roof in a couple of big tanks. These tanks we will also give a roof soon to keep them out of the sun and increase the catchment area to fill them quickly with the mild rains we so often get. From these tanks we water the garden during the dry season.
We never tried keyline ploughing, because our terrain is quite difficult and we prefer the terraces because they make working (mowing weeds) easier than on slopes. It's a one time job to make them, so we slowly continue with that.