pulibrary / ops-catchall

Operations Catch All
0 stars 0 forks source link

migrate from subversion to git #84

Open kayiwa opened 3 months ago

kayiwa commented 3 months ago

User story

As a Special Collections user, I want to be able to use version control with LDAP authentication instead of the lastpass generated password.

Acceptance criteria

Concrete example

Implementation notes below as a Design Document

Software Design Document: Migration from Subversion to Gitea (Forgejo) with LDAP Authentication

1. Introduction

Purpose: This document outlines the strategy and steps required to migrate our project's version control system from Subversion (SVN) to Gitea Forgejo, primarily driven by the need for LDAP authentication support. Scope: This migration encompasses the code repository, historical commit data, and user access management. Benefits: The move to Gitea will provide enhanced collaboration features, better integration with modern development workflows, and seamless LDAP authentication for streamlined user management.

2. Current System

Version Control System: Subversion Authentication: Potentially a mix of local SVN user accounts and potentially other mechanisms. Challenges: Lack of LDAP integration, limited collaboration tools, and potential leaks for passwords

3. Proposed System

Version Control System: Gitea (Forgejo), a self-hosted Git service with a user-friendly web interface. Authentication: Gitea will be configured to utilize LDAP for user authentication and authorization, leveraging our existing LDAP infrastructure. Advantages: Robust LDAP integration Distributed version control with Git and Large File System Enhanced collaboration features (pull requests, code reviews, issue tracking)

4. Migration Process

Gitea Installation and Configuration:

Install Gitea on a suitable server. Configure Gitea to connect to the LDAP server for authentication. Set up user groups and permissions within Gitea as needed. SVN to Git Conversion:

Utilize git svn or a dedicated migration tool (e.g., svn2git) to convert the SVN repository to a Git repository. Carefully map SVN users to Git users to preserve commit history. Test the converted Git repository to ensure data integrity. Data Migration:

Import the converted Git repository into Gitea. Migrate any additional project-related data (e.g., issue trackers, wikis) as needed. User Transition:

Communicate the migration plan to all project stakeholders. Provide training and support to users on the new Git workflow and Gitea interface. Ensure users update their local Git configurations to point to the new Gitea repository. Testing and Validation:

Thoroughly test all aspects of the migrated system (code access, commits, pull requests, etc.). Address any identified issues or inconsistencies. Deployment:

Switch over to the new Gitea system in a controlled manner, potentially with a period of parallel operation. Decommission the old Subversion system once the migration is complete and validated.

5. Risks and Mitigation

Data Loss: Mitigate by performing thorough backups of both the SVN and Gitea repositories before and during the migration process. User Adoption Challenges: Address by providing comprehensive training and support to users throughout the transition. Integration Issues: Minimize by testing the integration with existing tools and workflows early in the migration process.

6. Conclusion

This migration to Gitea (Forgejo) will streamline our development process, enhance collaboration, and provide a more secure and efficient way to manage user access through LDAP authentication. Careful planning and execution of the migration steps outlined in this document will ensure a smooth and successful transition.