Xilinx/AMD have a document to specify how to do this, in either project/scripted flow:
https://docs.amd.com/r/en-US/ug892-vivado-design-flows-overview/Source-based-Revision-Control-Methodology