Trong hệ thống quản lý phiên bản, một kho (còn được gọi kho mã nguồn,[1] kho lưu trữ, hoặc kho chứa; tiếng Anh: repository[2]) là một cấu trúc dữ liệu giúp lưu trữ metadata cho một tập hợp các file hoặc cấu trúc thư mục. Tùy thuộc vào việc hệ thống kiểm soát phiên bản đang sử dụng được dùng là phân phối (ví dụ, Git hoặc Mercurial) hoặc tập trung (ví dụ Subversion hay Perforce), toàn bộ thông tin trong kho lưu trữ có thể được sao chép trên mọi hệ thống của người dùng hoặc có thể được duy trì trên một máy chủ duy nhất. Một số siêu dữ liệu mà kho bao gồm:
Mục đích chính của kho là lưu trữ một tập các files, cũng như lịch sử thay đổi được thực hiện cho các file đó.[3] Tuy nhiên, chính xác cách mỗi hệ thống kiểm soát sửa đổi xử lý việc lưu trữ những thay đổi đó, tuy nhiên, khác nhau rất nhiều: ví dụ, Subversion trước đây dựa vào một instance cơ sở dữ liệu và từ đó đã chuyển sang lưu trữ các thay đổi của nó trực tiếp trên filesystem.[4] Những khác biệt trong phương pháp này thường dẫn đến việc sử dụng đa dạng kiểm soát sửa đổi bởi các nhóm khác nhau, tùy thuộc vào nhu cầu của họ.[5]