cli: Suggest correct command for pushing

In cases where there is an existing remote, the user has to specify the
branch name when pushing, so we update the help string to suggest that.
This commit is contained in:
cloudhead 2024-01-04 13:46:33 +01:00
parent 50460842f4
commit 59c101fc59
No known key found for this signature in database
3 changed files with 62 additions and 2 deletions

View File

@ -0,0 +1,42 @@
Let's try to `rad init` a repo which already has a remote tracking branch for `master`.
First we have to create a valid remote repository.
```
$ git init --bare remote
Initialized empty Git repository in [..]
```
Then we add it as a remote.
```
$ git remote add origin file://$PWD/remote
$ git push -u origin master:master
branch 'master' set up to track 'origin/master'.
$ git branch -vv
* master f2de534 [origin/master] Second commit
```
Then we initialize.
```
$ rad init --name heartwood --description "Heartwood Protocol & Stack" --no-confirm --public
Initializing public radicle 👾 project in .
✓ Project heartwood created.
Your project's Repository ID (RID) is rad:z2D6wQnKapY7dn5meBnbH2rUKNZbT.
You can show it any time by running `rad .` from this directory.
Your project will be announced to the network when you start your node.
You can start your node with `rad node start`.
To push changes, run `git push rad master`.
```
Finally we run the suggested command.
``` (stderr)
$ git push rad master
Everything up-to-date
```

View File

@ -271,7 +271,7 @@ pub fn init(options: Options, profile: &profile::Profile) -> anyhow::Result<()>
&repo,
&name,
&description,
branch,
branch.clone(),
visibility,
&signer,
&profile.storage,
@ -304,7 +304,7 @@ pub fn init(options: Options, profile: &profile::Profile) -> anyhow::Result<()>
radicle::git::refs::workdir::branch(proj.default_branch()),
)?;
} else {
push_cmd = format!("git push {}", *radicle::rad::REMOTE_NAME);
push_cmd = format!("git push {} {branch}", *radicle::rad::REMOTE_NAME);
}
if options.setup_signing {

View File

@ -146,6 +146,24 @@ fn rad_init() {
.unwrap();
}
#[test]
fn rad_init_with_existing_remote() {
let mut environment = Environment::new();
let profile = environment.profile(config::profile("alice"));
let working = tempfile::tempdir().unwrap();
// Setup a test repository.
fixtures::repository(working.path());
test(
"examples/rad-init-with-existing-remote.md",
working.path(),
Some(&profile.home),
[],
)
.unwrap();
}
#[test]
fn rad_init_no_git() {
let mut environment = Environment::new();