radicle-heartwood-lfs/crates/radicle-cli/examples/rad-merge-via-push.md

166 lines
8.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Let's start by creating two patches.
```
$ git checkout -b feature/1 -q
$ git commit --allow-empty -m "First change"
[feature/1 20aa5dd] First change
```
``` (stderr) RAD_SOCKET=/dev/null
$ git push rad HEAD:refs/patches
✓ Patch 696ec5508494692899337afe6713fe1796d0315c opened
To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
* [new reference] HEAD -> refs/patches
```
```
$ git checkout -b feature/2 -q master
$ git commit --allow-empty -m "Second change"
[feature/2 daf349f] Second change
```
``` (stderr) RAD_SOCKET=/dev/null
$ git push rad HEAD:refs/patches
✓ Patch 356f73863a8920455ff6e77cd9c805d68910551b opened
To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
* [new reference] HEAD -> refs/patches
```
This creates some remote tracking branches for us:
```
$ git branch -r
rad/master
rad/patches/356f73863a8920455ff6e77cd9c805d68910551b
rad/patches/696ec5508494692899337afe6713fe1796d0315c
```
And some remote refs:
```
$ rad inspect --refs
z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
└── refs
   ├── cobs
   │   ├── xyz.radicle.id
   │   │   └── 0656c217f917c3e06234771e9ecae53aba5e173e
   │   └── xyz.radicle.patch
   │      ├── 356f73863a8920455ff6e77cd9c805d68910551b
   │      └── 696ec5508494692899337afe6713fe1796d0315c
   ├── heads
   │   ├── master
   │   └── patches
   │      ├── 356f73863a8920455ff6e77cd9c805d68910551b
   │      └── 696ec5508494692899337afe6713fe1796d0315c
   └── rad
      ├── id
      ├── root
      └── sigrefs
```
Then let's merge the changes into `master`.
``` (stderr) RAD_SOCKET=/dev/null
$ git checkout master
Switched to branch 'master'
$ git merge feature/1
$ git merge feature/2
```
When we push to `rad/master`, we automatically merge the patches:
``` (stderr) RAD_SOCKET=/dev/null
$ git push rad master
✓ Patch 356f73863a8920455ff6e77cd9c805d68910551b merged
✓ Patch 696ec5508494692899337afe6713fe1796d0315c merged
✓ Canonical reference refs/heads/master updated to target commit d6399c71702b40bae00825b3c444478d06b4e91c
To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
f2de534..d6399c7 master -> master
```
```
$ rad patch --merged
╭─────────────────────────────────────────────────────────────────────────────────────╮
│ ● ID Title Author Reviews Head + - Updated Labels │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ ✓ [ ... ] Second change alice (you) - daf349f +0 -0 now │
│ ✓ [ ... ] First change alice (you) - 20aa5dd +0 -0 now │
╰─────────────────────────────────────────────────────────────────────────────────────╯
$ rad patch show 696ec5508494692899337afe6713fe1796d0315c
╭──────────────────────────────────────────────────────────╮
│ Title First change │
│ Patch 696ec5508494692899337afe6713fe1796d0315c │
│ Author alice (you) │
│ Head 20aa5dde6210796c3a2f04079b42316a31d02689 │
│ Base [.. ] │
│ Branches feature/1 │
│ Commits ahead 0, behind 2 │
│ Status merged │
├──────────────────────────────────────────────────────────┤
│ 20aa5dd First change │
├──────────────────────────────────────────────────────────┤
│ ● Revision 696ec55 @ [.. ]..20aa5dd by alice (you) now │
│ └─ ✓ merged by alice (you) │
╰──────────────────────────────────────────────────────────╯
$ rad patch show 356f73863a8920455ff6e77cd9c805d68910551b
╭──────────────────────────────────────────────────────────╮
│ Title Second change │
│ Patch 356f73863a8920455ff6e77cd9c805d68910551b │
│ Author alice (you) │
│ Head daf349ff76bedf48c5f292290b682ee7be0683cf │
│ Base [.. ] │
│ Branches feature/2 │
│ Commits ahead 0, behind 2 │
│ Status merged │
├──────────────────────────────────────────────────────────┤
│ daf349f Second change │
├──────────────────────────────────────────────────────────┤
│ ● Revision 356f738 @ [.. ]..daf349f by alice (you) now │
│ └─ ✓ merged by alice (you) │
╰──────────────────────────────────────────────────────────╯
```
We can verify that the remote tracking branches were also deleted:
```
$ git branch -r
rad/master
```
And so were the remote branches:
```
$ rad inspect --refs
z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
└── refs
   ├── cobs
   │   ├── xyz.radicle.id
   │   │   └── 0656c217f917c3e06234771e9ecae53aba5e173e
   │   └── xyz.radicle.patch
   │      ├── 356f73863a8920455ff6e77cd9c805d68910551b
   │      └── 696ec5508494692899337afe6713fe1796d0315c
   ├── heads
   │   └── master
   └── rad
      ├── id
      ├── root
      └── sigrefs
```
Finally, let's check that we can revert the second patch without affecting
the first patch, even though they were pushed together.
``` (stderr) RAD_SOCKET=/dev/null
$ git reset --hard HEAD^
$ git push -f rad
! Patch 356f73863a8920455ff6e77cd9c805d68910551b reverted at revision 356f738
✓ Canonical reference refs/heads/master updated to target commit 20aa5dde6210796c3a2f04079b42316a31d02689
To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
+ d6399c7...20aa5dd master -> master (forced update)
```
```
$ rad patch --all
╭─────────────────────────────────────────────────────────────────────────────────────╮
│ ● ID Title Author Reviews Head + - Updated Labels │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ ● 356f738 Second change alice (you) - daf349f +0 -0 now │
│ ✓ 696ec55 First change alice (you) - 20aa5dd +0 -0 now │
╰─────────────────────────────────────────────────────────────────────────────────────╯
```