Initial commit
This commit is contained in:
commit
cfcc57a8bd
353 changed files with 18756 additions and 0 deletions
274
module/aspect/software/code/version-control/jujutsu.nix
Normal file
274
module/aspect/software/code/version-control/jujutsu.nix
Normal file
|
|
@ -0,0 +1,274 @@
|
|||
_:
|
||||
{
|
||||
den.aspects = {
|
||||
version-control = {
|
||||
homeManager =
|
||||
{ pkgs, config, ... }:
|
||||
{
|
||||
home.packages = [
|
||||
pkgs.watchman
|
||||
];
|
||||
programs = {
|
||||
jujutsu = {
|
||||
enable = true;
|
||||
settings = {
|
||||
fsmonitor = {
|
||||
backend = "watchman";
|
||||
watchman.register-snapshot-trigger = true;
|
||||
};
|
||||
snapshot.max-new-file-size = "15M";
|
||||
user = {
|
||||
inherit (_.config.meta.${config.home.username}.fullname);
|
||||
inherit (_.config.meta.${config.home.username}.email);
|
||||
};
|
||||
ui = {
|
||||
default-command = "l";
|
||||
diff-editor = ":builtin";
|
||||
graph.style = "square";
|
||||
pager = ":builtin";
|
||||
show-cryptographic-signatures = true;
|
||||
};
|
||||
git = {
|
||||
private-commits = "description(glob:'wip:*') | description(glob:'private:*')";
|
||||
auto-local-bookmark = true;
|
||||
fetch = [
|
||||
"origin"
|
||||
];
|
||||
write-change-id-header = true;
|
||||
};
|
||||
revset-aliases = {
|
||||
"immutable_heads()" = "trunk() | tags() | remote_bookmarks(remote=origin)";
|
||||
"closest_bookmark(to)" = "heads(::to & bookmarks())";
|
||||
"closest_pushable(to)" =
|
||||
"heads(::to & mutable() & ~description(exact:\"\") & (~empty() | merges()))";
|
||||
# Source: https://github.com/bryceberger/config/blob/38c6caf0823517b5423b2ca2a25f7fd79d445e0e/home/jj/config.toml
|
||||
"mine()" = "author(exact:'@name@') | author(exact:'@email@')";
|
||||
"wip()" = "description(glob:'wip:*')";
|
||||
"private()" = "description(glob:'private:*')";
|
||||
"stack()" = "ancestors(mutable() & (..@ | @::), 2)";
|
||||
"stack(x)" = "ancestors(mutable() & (..x | x::), 2)";
|
||||
"stack(x, n)" = "ancestors(mutable() & (..x | x::), n)";
|
||||
"streams()" = "heads(::@ & bookmarks())";
|
||||
"streams(x)" = "heads(::x & bookmarks())";
|
||||
"base_point(x)" = "heads(immutable_heads() & ::x)";
|
||||
"open()" = "stack(trunk().. & mine(), 2)";
|
||||
"open(n)" = "stack(trunk().. & mine(), n)";
|
||||
"why_immutable(r)" = "(r & immutable()) | roots(r:: & immutable_heads())";
|
||||
};
|
||||
revsets = {
|
||||
log = ''
|
||||
none()
|
||||
| base_point(@)
|
||||
| ancestors(@, 10) & trunk()..@
|
||||
| trunk()
|
||||
| bookmarks()
|
||||
| mutable() & visible_heads()
|
||||
| fork_point(mutable() & visible_heads())
|
||||
| (mutable() & merges())-
|
||||
'';
|
||||
short-prefixes = "stack(@)";
|
||||
};
|
||||
|
||||
template-aliases = {
|
||||
"link(target, text)" =
|
||||
''raw_escape_sequence("\x1b]8;;" ++ target ++ "\x1b\\") ++ label("text link", text) ++ raw_escape_sequence("\x1b]8;;\x1b\\")'';
|
||||
"italic(text)" = ''raw_escape_sequence("\x1b[3m") ++ text ++ raw_escape_sequence("\x1b[23m")'';
|
||||
"dim(text)" = ''raw_escape_sequence("\x1b[2m") ++ text ++ raw_escape_sequence("\x1b[22m")'';
|
||||
|
||||
"commit_description_verbose(commit)" = ''
|
||||
concat(
|
||||
commit_description(commit),
|
||||
"JJ: ignore-rest\n",
|
||||
diff.git(),
|
||||
)
|
||||
'';
|
||||
"commit_description(commit)" = ''
|
||||
concat(
|
||||
commit.description(), "\n",
|
||||
"JJ: This commit contains the following changes:\n",
|
||||
indent("JJ: ", diff.stat(72)),
|
||||
)
|
||||
'';
|
||||
|
||||
annotate_header = ''
|
||||
if(first_line_in_hunk, surround("\n", "\n", separate("\n",
|
||||
separate(" ",
|
||||
format_short_change_id_with_hidden_and_divergent_info(commit),
|
||||
format_short_id(commit.commit_id()),
|
||||
format_short_cryptographic_signature(commit.signature()),
|
||||
commit.description().first_line(),
|
||||
),
|
||||
commit_timestamp(commit).local().format('%Y-%m-%d %H:%M:%S')
|
||||
++ " "
|
||||
++ commit.author(),
|
||||
))) ++ pad_start(4, line_number) ++ ": " ++ content
|
||||
'';
|
||||
|
||||
# 00000000 ........ yyyy-mm-dd HH:MM:SS 1:
|
||||
annotate = ''
|
||||
if(first_line_in_hunk,
|
||||
separate(" ",
|
||||
format_short_id(commit.change_id()),
|
||||
pad_end(8, truncate_end(8, commit.author().email().local())),
|
||||
commit_timestamp(commit).local().format('%Y-%m-%d %H:%M:%S'),
|
||||
),
|
||||
pad_end(37, ""),
|
||||
) ++ pad_start(4, line_number) ++ ": " ++ content
|
||||
'';
|
||||
|
||||
"format_commit_info(commit)" = ''
|
||||
separate(" ",
|
||||
format_short_change_id_with_hidden_and_divergent_info(commit),
|
||||
format_short_id(commit.commit_id()),
|
||||
format_short_cryptographic_signature(commit.signature()),
|
||||
)'';
|
||||
|
||||
"format_commit_bookmarks(commit)" = ''
|
||||
separate(" ",
|
||||
commit.working_copies(),
|
||||
commit.tags(),
|
||||
commit.bookmarks(),
|
||||
)'';
|
||||
|
||||
"format_description(commit)" = ''
|
||||
separate(" ",
|
||||
if(empty, label("empty", "(empty)")),
|
||||
coalesce(
|
||||
if(commit.description(),
|
||||
truncate_end(48, commit.description().first_line(), " [...]"),
|
||||
if(!empty, label("description placeholder", "(no description)")),
|
||||
)
|
||||
)
|
||||
)'';
|
||||
|
||||
"format_author(commit)" = ''
|
||||
separate(" ",
|
||||
commit.author().email(),
|
||||
commit.author().name(),
|
||||
)
|
||||
'';
|
||||
|
||||
"format_commit_date(commit)" = ''
|
||||
separate(" ",
|
||||
commit_timestamp(commit).local().format('%Y-%m-%d %H:%M:%S'),
|
||||
)
|
||||
'';
|
||||
|
||||
default_log = ''
|
||||
separate(" ",
|
||||
format_commit_info(self),
|
||||
format_commit_bookmarks(self),
|
||||
format_description(self),
|
||||
format_author(self),
|
||||
format_commit_date(self),
|
||||
)'';
|
||||
};
|
||||
|
||||
templates = {
|
||||
draft_commit_description = "commit_description(self)";
|
||||
|
||||
file_annotate = "annotate_header";
|
||||
|
||||
log = "default_log";
|
||||
log_node = ''
|
||||
label("node", coalesce(
|
||||
if(!self, label("elided", "~")),
|
||||
label(
|
||||
separate(" ",
|
||||
if(current_working_copy, "working_copy"),
|
||||
if(conflict, "conflict"),
|
||||
if(immutable, "immutable"),
|
||||
if(description.starts_with("wip:"), "wip"),
|
||||
if(description.starts_with("private:"), "wip"),
|
||||
),
|
||||
coalesce(
|
||||
if(current_working_copy, "@"),
|
||||
if(conflict, "x"),
|
||||
if(immutable, "◆"),
|
||||
if(description.starts_with("wip:"), "!"),
|
||||
if(description.starts_with("private:"), "◇"),
|
||||
"○",
|
||||
)
|
||||
)
|
||||
))
|
||||
'';
|
||||
};
|
||||
|
||||
aliases = {
|
||||
tug = [
|
||||
"bookmark"
|
||||
"move"
|
||||
"--from"
|
||||
"closest_bookmark(@)"
|
||||
"--to"
|
||||
"closest_pushable(@)"
|
||||
];
|
||||
ds = [
|
||||
"diff"
|
||||
"--stat"
|
||||
];
|
||||
dv = [
|
||||
"--config=templates.draft_commit_description=commit_description_verbose(self)"
|
||||
"describe"
|
||||
];
|
||||
# Too slow - TODO investigate why
|
||||
# l = ["log" "-T" "builtin_log_compact"];
|
||||
# ll = ["log" "-T" "builtin_log_detailed"];
|
||||
l = [
|
||||
"log"
|
||||
"-r"
|
||||
"all()"
|
||||
];
|
||||
ll = [
|
||||
"log"
|
||||
"-r"
|
||||
"all()"
|
||||
"-T"
|
||||
"builtin_log_detailed"
|
||||
];
|
||||
xl = [
|
||||
"log"
|
||||
"-T"
|
||||
"builtin_log_detailed"
|
||||
];
|
||||
evolve = [
|
||||
"rebase"
|
||||
"--skip-empty"
|
||||
"-d"
|
||||
"main"
|
||||
];
|
||||
streams = [
|
||||
"log"
|
||||
"--no-graph"
|
||||
"-r"
|
||||
"streams()"
|
||||
"-T"
|
||||
"bookmarks.map(|b| b ++ ' ')"
|
||||
];
|
||||
open = [
|
||||
"log"
|
||||
"-r"
|
||||
"open()"
|
||||
];
|
||||
stack = [
|
||||
"log"
|
||||
"-r"
|
||||
"stack()"
|
||||
];
|
||||
s = [ "stack" ];
|
||||
yank = [
|
||||
"rebase"
|
||||
"--skip-emptied"
|
||||
"-s"
|
||||
"all:roots(mutable() & mine())"
|
||||
"-d"
|
||||
"trunk()"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue