Updated
On this page
move tracked paths and commit the moves with their records in one operation
#safegit mv
move tracked paths and commit the moves with their records in one operation
Effect: mutating
#Flags
| Name | Short | Type | Presence | Env | Description |
|---|---|---|---|---|---|
--m | -m | list[str] | required | commit message paragraph; repeating it joins the values with a blank line between them, so the first is the subject and the rest are the body | |
--create-missing-directories, --no-create-missing-directories | bool | optional | make the destination's parent directories when they are not there, removing again what this invocation made if the move is rolled back; omitted, and with --no-create-missing-directories, a destination whose directory does not exist is refused and nothing is moved |
#Arguments
| Name | Type | Presence | Description |
|---|---|---|---|
pairs | list[str] (variadic) | required | one move each, written 'old -> new'. End BOTH paths with a slash to move a whole directory, which is recorded as ONE subtree record however many files it holds. Quote a path C-style when it holds a space, a quote, a backslash or the arrow itself. Every pair is checked before the first file is touched -- the source must be tracked and on disk, the destination must be free and its directory must already exist unless --create-missing-directories says otherwise, the source must carry no uncommitted content changes, and no two pairs may speak for the same path or chain into one another -- and a failure part-way through puts back everything already moved. The commit is the move and nothing else: each path is carried across as the blob its parent commit held, which is why a path with uncommitted content changes is refused rather than moved -- commit the content first and then move it, or move it on disk yourself and commit both at once with 'safegit commit --moved' |
#Grants
| Kind | Name | Reason |
|---|---|---|
| proc_mutate | parent-bump | moving paths in a submodule moves the parent's gitlink, so safegit commits the parent too when commit.autoBumpParent is on |