diff --git a/radicle-cli/examples/rad-patch-merge-draft.md b/radicle-cli/examples/rad-patch-merge-draft.md new file mode 100644 index 00000000..980f7e74 --- /dev/null +++ b/radicle-cli/examples/rad-patch-merge-draft.md @@ -0,0 +1,19 @@ +Let's start by creating a draft patch. + +``` (stderr) RAD_SOCKET=/dev/null +$ git checkout -b feature/1 -q +$ git commit --allow-empty -q -m "First change" +$ git push -o patch.draft rad HEAD:refs/patches +✓ Patch cf29ac6b10141058be66b94a92a81c703b972751 drafted +To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi + * [new reference] HEAD -> refs/patches +``` + +``` (stderr) RAD_SOCKET=/dev/null +$ git checkout master -q +$ git merge feature/1 +$ git push rad master +✓ Patch cf29ac6b10141058be66b94a92a81c703b972751 merged +To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi + f2de534..20aa5dd master -> master +``` diff --git a/radicle-cli/tests/commands.rs b/radicle-cli/tests/commands.rs index 66c63f35..e2f88cf7 100644 --- a/radicle-cli/tests/commands.rs +++ b/radicle-cli/tests/commands.rs @@ -666,6 +666,26 @@ fn rad_patch_via_push() { .unwrap(); } +#[test] +fn rad_patch_merge_draft() { + let mut environment = Environment::new(); + let profile = environment.profile(config::profile("alice")); + let working = tempfile::tempdir().unwrap(); + let home = &profile.home; + + // Setup a test repository. + fixtures::repository(working.path()); + + test("examples/rad-init.md", working.path(), Some(home), []).unwrap(); + test( + "examples/rad-patch-merge-draft.md", + working.path(), + Some(home), + [], + ) + .unwrap(); +} + #[test] #[cfg(not(target_os = "macos"))] fn rad_review_by_hunk() { diff --git a/radicle-remote-helper/src/push.rs b/radicle-remote-helper/src/push.rs index 5037d9ce..b5501f94 100644 --- a/radicle-remote-helper/src/push.rs +++ b/radicle-remote-helper/src/push.rs @@ -540,7 +540,7 @@ fn patch_merge_all( // Skip patches that failed to load. continue; }; - if !patch.is_open() { + if !patch.is_open() && !patch.is_draft() { continue; } // Later revisions are more likely to be merged, so we build the list backwards.