1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
#+title: Copland Fossil
Copland is a Fossil SCM fork with a compact built-in skin and native, safe
Org rendering for repository documentation and wiki pages.
* Fork layout
This directory is a checkout of the official Fossil repository. The fork is
developed on the =copland= branch from upstream commit =7a40eb9748=. The local
repository database is intentionally kept inside the ignored workspace path
=.repository/copland.fossil=; no project repository is stored elsewhere in the
user's home directory.
The official remote is retained as the named remote =upstream= while the
default remote is disabled. To inspect the configuration:
#+begin_src sh
fossil status
fossil remote list
#+end_src
Upstream updates are pulled explicitly and merged into =copland= only after
review. No upstream submission or publishing remote is configured.
* Development shell and build
#+begin_src sh
nix-shell
make fossil
#+end_src
The npins-backed shell provides Fossil's C dependencies, Tcl, OpenSSL, zlib,
Node.js, and Playwright browsers. It prepends =$PWD/.build/fossil= to =PATH=
and sets =FOSSIL=fossil=. It does not overwrite an installed system binary:
inside the shell =command -v fossil= resolves to the local build after
=make fossil=; outside the shell the system selection is unchanged.
The binary is built directly from the current checkout as
=.build/fossil/fossil=. There is no downloaded source tarball and no patch
application step.
* Copland skin
Copland lives in =skins/copland/= and is compiled into the binary. It is the
fallback skin for repositories without an explicit skin configuration.
Repository-specific custom skins and explicit =--skin= arguments still win,
and Fossil's original skin remains available as =--skin default=.
The editable SCSS, standalone skin export, demo scripts, and browser tests are
under =tools/copland/=. Rebuild the generated CSS and export with:
#+begin_src sh
make build
#+end_src
Start the local repository-list preview with:
#+begin_src sh
make start
#+end_src
The migrated Nix documentation is available at
=http://127.0.0.1:8080/nix/wiki=. The preview exposes the local Copland
repository under the =nix= URL slug and always uses the built-in Copland skin.
* Nix packages
All external Nix inputs come from =npins/=. Build the Copland Fossil fork,
including its built-in default skin, with:
#+begin_src sh
nix-build -A packages.default
#+end_src
The resulting binary is =result/bin/fossil=. A standalone theme package is
available separately:
#+begin_src sh
nix-build -A packages.theme
#+end_src
It installs the individual skin files and the combined Fossil skin
configuration below =share/fossil/skins/copland/=. The development shell reuses
the fork package's native and linked build dependencies through =inputsFrom=.
For a single, self-contained Linux binary that can be copied to another
machine without a Nix installation or Nix store dependencies, build the static
package:
#+begin_src sh
nix-build -A packages.fossil-static -o result-static
cp result-static/bin/fossil ./fossil
#+end_src
The target machine must use the same CPU architecture as the build machine.
The Copland files are embedded in this executable and Copland is selected for
repositories which do not explicitly configure another skin. Existing custom
skins, =default-skin= settings, and explicit =--skin= options remain respected.
* Native Org support
=text/x-org= is supported for =README.org=, =/doc=, =/file=, document search,
and Fossil wiki pages. New wiki pages use Org by default; existing pages keep
their stored Fossil-Wiki, Markdown, Org, or plain-text MIME type.
The wiki page name is its visible and searchable title. A =#+TITLE= directive
inside an Org wiki page is recognized but not rendered as a duplicate heading.
Metadata, linked =toc:N= tables of contents, headings, paragraphs, nested lists,
tables, source/example blocks, inline emphasis, and safe links are supported.
Wiki and repository links are explicit:
#+begin_example
[[wiki:Deployment Guide][Deployment]]
[[wiki:Deployment Guide#Install][Installation]]
[[file:docs/deployment.org][Versioned repository document]]
[[*Local heading][This page's section]]
#+end_example
In a wiki page, =file:= paths are rooted at =/doc/tip/= and reject absolute or
parent-traversal paths. In repository documents they remain relative to the
current document. HTTP(S) links are allowed. JavaScript schemes, raw HTML,
Babel, dynamic blocks, and external runtimes are never executed.
Org is deliberately not offered for technotes, forum posts, tickets, or report
fields in this phase.
* Tests
#+begin_src sh
make test
make test-upstream
#+end_src
=make test= runs Org golden/security checks and Copland HTTP, accessibility,
desktop, mobile, light, and dark browser tests. =make test-upstream= runs the
complete Fossil Tcl suite, including the added Org wiki cases.
The imported =/home/cashmere/nix= repository and its documentation are not
modified by this fork work. Moving those documents into independently
versioned Org wiki pages is a separate, explicitly reviewed migration.
|