Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Difference From 0.8 To 0.7
2022-01-09 15:42 | Bump version number: 0.9 (check-in: 1291047898 user: mark tags: trunk) | |
2022-01-09 15:32 | CHANGES for 0.8 (check-in: ab629f6e73 user: mark tags: trunk, 0.8) | |
2022-01-09 15:29 | Fix vertical split regression and DB locking issue. (check-in: 250d2884e8 user: mark tags: trunk) | |
2022-01-08 13:33 | Bump version number: 0.8 (check-in: 9918bb8dab user: mark tags: trunk) | |
2022-01-08 13:30 | CHANGES for 0.7 (check-in: 2c45034580 user: mark tags: trunk, 0.7) | |
2022-01-08 13:10 | Bump year in license headers (check-in: 277b68b64f user: mark tags: trunk) | |
Changes to CHANGES.md.
|
| < < < < < | 1 2 3 4 5 6 7 | **fnc 0.7** 2022-01-09 - factor out common make(1) and gmake build bits - make build depend on make file - make all commands compatible with `-R|--repository` (i.e., no checkout needed) - implement Vim-like smartcase for commands that filter repository results - improve timeline arg parsing for more informative output upon invalid input |
︙ | ︙ |
Changes to README.md.
1 2 | # README | | | | < < < < < < < < | | | 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 | # README # fnc 0.6 ## An ncurses browser for [Fossil][0] repositories in the terminal. `fnc` uses [libfossil][1] to create a [`fossil ui`][2] experience in the terminal. Tested and confirmed to run on the following amd64 systems (additional platforms noted inline): 1. OpenBSD 6.8- and 6.9-release 2. macOS 10.15.7 (Catalina) and 11.5.2 (Big Sur) 3. Linux Mint 20.2 (32- and 64-bit ARM) 4. Ubuntu 18.04 running Linux kernel 5.11 (32-bit ARM) 5. Debian GNU/Linux 8, 9, and 10 6. CentOS 6.5 (32-bit) Alpha development notwithstanding, the `timeline`, `diff`, `tree`, `blame`, and `branch` commands are relatively stable; however, there is no commitment to refrain from breaking changes. # Build 1. clone the repository - `fossil clone https://fnc.bsdbox.org` 2. move into the repository checkout - `cd fnc` 3. build fnc - `make` 4. install the `fnc` binary (*requires privileges*) - `doas make install` 5. move into an open Fossil checkout, and run it: - `cd ~/museum/repo && fossil open ../repo.fossil && fnc` This will install the `fnc` executable and man page into `/usr/local/bin` and `/usr/local/share/man/man1`, respectively. Alternatively, cryptographically signed binaries for some of the abovementioned platforms are available to [download][3]. # Doc See `fnc --help` for a quick reference, and the [fnc(1)][4] manual page for more comprehensive documentation. In-app help can also be accessed with the `?`, `F1`, or `H` key binding. The following video briefly demonstrates some of the key bindings in use. |
︙ | ︙ | |||
68 69 70 71 72 73 74 | [ticket][11]. As a rule, all reports should include a bug reproduction recipe; that is, either (1) the series of steps beginning with `fossil init` to create a new repository through to the `fnc` command that triggers the unexpected behaviour; or, if possible, (2) a shell script that contains all necessary ingredients to reproduce the problem. Patches are thoughtfully considered and can be sent to the [mailing list][12]. | | | | | | | | | | > | 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 | [ticket][11]. As a rule, all reports should include a bug reproduction recipe; that is, either (1) the series of steps beginning with `fossil init` to create a new repository through to the `fnc` command that triggers the unexpected behaviour; or, if possible, (2) a shell script that contains all necessary ingredients to reproduce the problem. Patches are thoughtfully considered and can be sent to the [mailing list][12]. While `diff -up` patches are preferred, `fossil patch create` and `fossil diff` patches are also welcomed. Please ensure code conforms to the C99 standard, and complies with OpenBSD's KNF [style(9)][13]. Any patch containing user-visible code addition, modification, or deletion (i.e., code that impacts user interfaces) should concomitantly include updating documentation affected by the change. # Screenshots ![diff split screen](https://fnc.bsdbox.org/uv/resources/img/fnc-diff-splitscreen.png "fnc diff split screen") ![diff renamed file](https://fnc.bsdbox.org/uv/resources/img/fnc-diff-full-file_renamed.png "fnc diff file renamed") ![diff added file](https://fnc.bsdbox.org/uv/resources/img/fnc-diff-split-file_added.png "fnc diff file added") ![diff removed file](https://fnc.bsdbox.org/uv/resources/img/fnc-diff-split-file-removed.png "fnc diff file removed") ![blame split screen](https://fnc.bsdbox.org/uv/resources/img/fnc-blame-splitscreen.png "fnc blame split screen") ![tree split screen](https://fnc.bsdbox.org/uv/resources/img/fnc-tree-splitscreen.png "fnc tree split screen") ![branch split screen](https://fnc.bsdbox.org/uv/resources/img/fnc-branch-splitscreen.png "fnc branch split screen") ![in-app help](https://fnc.bsdbox.org/uv/resources/img/fnc-inapp_help.png "fnc in-app help") ![timeline help](https://fnc.bsdbox.org/uv/resources/img/fnc-timeline-help.png "fnc timeline help") # Trivia **fnc** [fɪŋk] *noun* (n.) 1. an ncurses browser for [Fossil][0] repositories in the terminal *verb* (v.) 2. to inform etymology From the German word *Fink*, meaning "finch", a type of bird. [0]: https://fossil-scm.org [1]: https://fossil.wanderinghorse.net/r/libfossil [2]: https://fossil-scm.org/home/help?cmd=ui [3]: https://fnc.bsdbox.org/uv/download.html [4]: https://fnc.bsdbox.org/uv/resources/doc/fnc.1.html [5]: https://fnc.bsdbox.org/uv/resources/img/fnc-timeline-fullscreen.png [6]: https://itac.bsdbox.org/fnc-demo.mp4 [7]: https://gameoftrees.org/tog.1.html [8]: https://gameoftrees.org [9]: mailto:fnc@bsdbox.org [10]: https://fnc.bsdbox.org/forum [11]: https://fnc.bsdbox.org/ticket [12]: https://itac.bsdbox.org/listinfo/fnc [13]: https://man.openbsd.org/style.9 |
Changes to fnc.bld.mk.
1 2 3 4 5 6 7 8 | # # FNC Common Build # # CONFIGURATION CC ?= cc PREFIX ?= /usr/local MANDIR ?= /share/man | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # # FNC Common Build # # CONFIGURATION CC ?= cc PREFIX ?= /usr/local MANDIR ?= /share/man VERSION ?= 0.7 # FLAGS NEEDED TO BUILD SQLITE3 SQLITE_CFLAGS = ${CFLAGS} -Wall -Werror -Wno-sign-compare -pedantic -std=c99 \ -DNDEBUG=1 \ -DSQLITE_DQS=0 \ -DSQLITE_THREADSAFE=0 \ -DSQLITE_DEFAULT_MEMSTATUS=0 \ |
︙ | ︙ |
Added signify/fnc-06-release.pub.
> > | 1 2 | untrusted comment: fnc 0.6 public key RWR9WSUPU3FZeibo9ua+4XS26RqiiIDD9uecMYwaNup8M8ulfmARVC1N |
Deleted signify/fnc-08-release.pub.
|
| < < |
Changes to src/fnc.c.
︙ | ︙ | |||
2358 2359 2360 2361 2362 2363 2364 | struct fnc_tl_thread_cx *cx = &view->state.timeline.thread_cx; int rc = 0; while (cx->ncommits_needed > 0) { if (cx->eotl) break; | < < < | 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 | struct fnc_tl_thread_cx *cx = &view->state.timeline.thread_cx; int rc = 0; while (cx->ncommits_needed > 0) { if (cx->eotl) break; /* Wake timeline thread. */ if ((rc = pthread_cond_signal(&cx->commit_consumer))) return RC(fsl_errno_to_rc(rc, FSL_RC_MISUSE), "%s", "pthread_cond_signal"); /* * Mutex will be released while view_loop().view_input() waits |
︙ | ︙ | |||
3623 3624 3625 3626 3627 3628 3629 | * estate. If set to 'v' or 'h', assign start column or start line of the split * view to *start_col and *start_ln, respectively, and return split mode. */ static enum view_mode view_get_split(struct fnc_view *view, int *start_col, int *start_ln) { char *mode = fnc_conf_getopt(FNC_VIEW_SPLIT_MODE, false); | < | < | < | < | | < | 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 | * estate. If set to 'v' or 'h', assign start column or start line of the split * view to *start_col and *start_ln, respectively, and return split mode. */ static enum view_mode view_get_split(struct fnc_view *view, int *start_col, int *start_ln) { char *mode = fnc_conf_getopt(FNC_VIEW_SPLIT_MODE, false); if (!mode || mode[0] != 'h') *start_col = view_split_start_col(view->start_col); if (!*start_col && (!mode || mode[0] != 'v')) *start_ln = view_split_start_ln(view->lines); return *start_col ? VIEW_SPLIT_VERT : VIEW_SPLIT_HRZN; } /* Split view horizontally at *start_ln and offset view->state->selected line */ static int split_view(struct fnc_view *view, int *start_ln) { int rc = FSL_RC_OK; |
︙ | ︙ |