Ett versionsfilsystem är en datorprogramvara i ett större filsystem som bevarar filer när de ändras så att filen kan visas eller återställas till ett tidigare tillstånd. Under ett versionsfilsystem kommer alla filer som skapas att ha alla ändringar av sina data lagrade någonstans i filsystemet så att fildata kan rekonstrueras för att representera dess korrekta tillstånd vid vilken tidpunkt som helst sedan den skapades. Även om slutresultatet av att använda versionshantering i ett filsystem liknar att skapa en säkerhetskopia av filer i filsystemet, anses det inte vara detsamma eftersom de olika versionerna av filerna lagras i samma filsystem, vanligtvis i samma volym som filen som versioneras. Mekanismerna som används för att implementera ett filsystem för versionshantering kan variera mycket, men de inkluderar vanligtvis att antingen spara en hel fil med jämna mellanrum för att skapa en version, eller att upprätthålla en logg för varje fil där endast ändringarna sparas så att filen kan procedurmässigt rekonstrueras som behövs. En av fördelarna med ett versionsfilsystem när det används i en utvecklingsmiljö eller en samarbetsmiljö är att ändringar både kan spåras och helt ångras.
Implementeringen av ett versionshanteringsfilsystem kan variera mycket. Ett fåtal filsystem implementerar versionshantering inom sina egna ramar, men versionering läggs ofta till separat, vilket skapar ett så kallat stapelbart versionsfilsystem, där versionshanteringsförmågan fungerar ovanpå en annan typ av filsystem. Ett filsystem kommer ibland att montera en separat logisk disk för att lagra versionsinformationen, medan andra gånger skrivs informationen till filer lagrade i samma logiska volym som de faktiska datafilerna.
På systemnivå kan ett versionshanteringsfilsystem ta flera metoder för att lagra versionsinformation. En enkel metod är känd som kopiera vid skrivning, där versionssystemet fångar systemfilskrivningshändelser och skapar en kopia av filen för att bevara den tidigare versionen. Detta är effektivt men kan använda en stor mängd lagring över tiden.
Ett annat sätt att implementera versionshantering i ett filsystem är att spåra ändringar av en fil genom att endast lagra ändringarna. Denna metod skapar i huvudsak en logg som bara visar vilken information som lagts till, ändrats eller raderats från en fil. Endast inspelning av ändringar kan vara mycket effektivt ur ett lagringsperspektiv men kräver processorkraft för att återmontera en fil genom att i princip gå igenom alla ändringar som gjordes för att komma fram till ögonblicksbilden som användaren begär.
Ett versionshanteringsfilsystem är särskilt användbart i en utvecklingsmiljö för samarbete. För mjukvaruutveckling kan det vara ett värdefullt sätt att ta bort eller återställa ändringar när problem uppstår efter en uppdatering. Andra samarbetsmiljöer kan tillåta flera användare att ändra dokument, så versionshantering kan tillåta att ett dokument delvis återställs om flera ändringar skulle behöva tas bort. Inom nätverksadministration hjälper versionshantering till att mildra långvariga skador från skadlig programvara eller hackare som kan försöka att subtilt vandalisera filer.