Closed EloyMartinez closed 3 days ago
The changes in this pull request introduce enhancements to the error handling and forking processes within the codebase. A new error variant, RepoAlreadyExistsAtDestination
, is added to the OxenError
enum for better error reporting. The forking functionality is significantly restructured, with the introduction of asynchronous operations, new functions for managing fork statuses, and a new endpoint for retrieving fork status. Additionally, the fork
function in the controller is updated to improve error handling and response management.
File Path | Change Summary |
---|---|
src/lib/src/error.rs |
Added variant RepoAlreadyExistsAtDestination(Box<StringError>) to OxenError enum; added method repo_already_exists_at_destination(value: StringError) -> Self . |
src/lib/src/repositories.rs |
Removed export of fork function (pub use fork::fork; ). |
src/lib/src/repositories/fork.rs |
Replaced fork function with start_fork ; added functions get_fork_status , write_status , read_status ; modified copy_dir_recursive to include additional parameters. |
src/lib/src/view/fork.rs |
Updated ForkRequest to derive Serialize , added enum ForkStatus and structs ForkStatusFile , ForkStartResponse , ForkStatusResponse ; added implementation for ForkStatus . |
src/server/src/controllers/fork.rs |
Updated fork function to use repositories::fork::start_fork ; added get_status function for retrieving fork status. |
src/server/src/services/fork.rs |
Added new GET route /fork/status to retrieve fork operation status, alongside existing POST route. |
RepoAlreadyExistsAtDestination
variant added in the main PR.🐰 In the code where we play,
New errors come out to say,
"A repo's here, it can't be done!"
Forking now is so much fun!
With status checks and threads that race,
Our code hops to a better place! 🌟
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
Description:
This pull request introduces a new asynchronous mechanism for forking repositories within the Oxen project. The implementation enhances the existing forking functionality by allowing operations to be performed in the background, thereby improving the user experience for large repositories by not blocking the user interface.
Key Changes:
Asynchronous Forking Process: The core addition is the asynchronous execution of the fork process. This is achieved by spawning a new thread to handle the copying of repository data to the new destination, allowing the main application flow to continue uninterrupted.
Fork Status Tracking: We've introduced a mechanism for tracking the status of ongoing fork operations. This includes states such as InProgress, Complete, and Failed, along with progress tracking for the copying process. This status can be queried through a new endpoint, providing real-time feedback on the operation's progress.
Error Handling Enhancements: The PR includes improved error handling, specifically for scenarios where the destination repository already exists or when an issue arises during the fork process. Error states are now more descriptive and include additional details to aid in troubleshooting.
Summary by CodeRabbit
Release Notes
New Features
Bug Fixes
Documentation
Refactor
Tests