Trying to understand the syntax of the push command, I think both push and pull need to say exactly what they are doing.
There also needs to be a good way to cancel out of an interactive command. This would especially apply to the situation described in #675 (Bringing back unrecorded patches).
The help for push says
pijul push [OPTIONS] [TO] [-- <CHANGES>...]
So I wondered what the push command would do if I specified a repo and no destination.
/Data/pijul2$ pijul push --repository /Data/pijul3 Nothing to push /Data/pijul2$ pijul push --repository /Data/pijul3 . Use "fg" to return to nano. + Stopped pijul push --repository /Data/pijul3 . /Data/pijul2$ ^C /Data/pijul2$ fg pijul push --repository /Data/pijul3 . Uploading changes [==================================================] 12/12 /Data/pijul2$
With no destination, it said nothing to push (there was a delay while it checked though).
With a destination of
., it had 12 changes. I hit Ctrl Z to get out and tried Ctrl C to stop it, but that didn’t do it. I guess I should have used
kill, but I really wanted out while in the editor. I know I could delete all lines so there would be nothing to do, but I don’t know that editor so I don’t even know how to do that. When I let it run, it pushed 12 changes. Did they go from pijul3 to pijul2? What was the first command doing?
I think the command should say a bit more about direction, even including it in the comment at the top of the file.
/Data/pijul2$ pijul push --repository /Data/pijul3
This seems to be interpreted as “push from pijul3 to pijul3”, which is always a no-op. This is an error. The command should complain with: “Error: Missing remote” as it does for
pijul push (w/o any arguments).
/Data/pijul2$ pijul push --repository /Data/pijul3 .
This (rightfully) means “act from pijul3; push to ‘.’ (which points to pijul2); thus, push from pijul3 to pijul2”. This is equivalent to the following shell commands:
cd /Data/pijul3 pijul push /Data/pijul2 cd /Data/pijul2
N.B. You can set your editor of choice by setting the
EDITOR or the
VISUAL environment variable, e.g.
export VISUAL=emacs before running
pijul push. VISUAL takes precedence over EDITOR should both be set.