Warning: there may be occasional oddness due to css and blog edits. **KNOWN ISSUE: possible hidden text**
Showing posts with label deprecated. Show all posts
Showing posts with label deprecated. Show all posts

Thursday, March 14, 2024

Another dialog change

Already included in FreeBSD 14.0, bsddialog will replace dialog.  I was looking at the 15.0 release notes and UPDATING files to see what new thing I could switch to using early as I did with portdialog.  This one appears to be a much more developer-oriented item, so I will have to create some examples as I go, on the commmandline to give you something to see here.

% bsddialog
Error: expected a --<dialog>.

See 'bsddialog --help' or 'man 1 bsddialog' for more information.
%

I really like this as feedback from attempting to use it without knowing how or what to do, it gives both the built-in help as below, plus informs about the much more verbose manpage option.

% bsddialog --help
usage: bsddialog --help
       bsddialog --version
       bsddialog [--<opt>] --<dialog> <text> <rows> <cols> [<arg>]
       bsddialog --<dialog1> ...  [--and-dialog --<dialog2> ...] ...

Options:
 --alternate-screen, --ascii-lines, --backtitle <backtitle>, --begin-x <x>,
 --begin-y <y>, --bikeshed, --calendar, --cancel-label <label>, --clear-dialog,
 --clear-screen, --colors, --columns-per-row <columns>, --cr-wrap,
 --date-format <format>, --default-button <label>, --default-item <name>,
 --default-no, --disable-esc, --esc-return-cancel, --exit-label <label>,
 --extra-button, --extra-label <label>, --generic-button1 <label>,
 --generic-button2 <label>, --help-button, --help-label <label>,
 --help-print-name, --help-status, --hfile <file>, --hline <string>,
 --hmsg <string>, --ignore, --insecure, --item-bottom-desc, --item-depth,
 --item-prefix, --load-theme <file>, --max-input <size>, --no-cancel,
 --no-descriptions, --no-label <label>, --no-lines, --no-names, --no-ok,
 --no-shadow, --normal-screen, --ok-label <label>, --output-fd <fd>,
 --output-separator <sep>, --print-maxsize, --print-size, --print-version,
 --quoted, --save-theme <file>, --separate-output, --separator <sep>, --shadow,
 --single-quoted, --sleep <secs>, --stderr, --stdout, --tab-escape,
 --tab-len <spaces>, --text-unchanged, --switch-buttons,
 --theme <blackwhite|bsddialog|flat|dialog>, --time-format <format>,
 --title <title>, --yes-label <label>.

Dialogs:
 --calendar <text> <rows> <cols> [<dd> <mm> <yy>]
 --checklist <text> <rows> <cols> <menurows> [<name> <desc> <on|off>] ...
 --datebox <text> <rows> <cols> [<dd> <mm> <yy>]
 --form <text> <rows> <cols> <formrows> [<label> <ylabel> <xlabel> <init> <yfield> <xfield> <fieldlen> <maxletters>] ...
 --gauge <text> <rows> <cols> [<perc>]
 --infobox <text> <rows> <cols>
 --inputbox <text> <rows> <cols> [init]
 --menu <text> <rows> <cols> <menurows> [<name> <desc>] ...
 --mixedform <text> <rows> <cols> <formrows> [<label> <ylabel> <xlabel> <init> <yfield> <xfield> <fieldlen> <maxletters> <0|1|2>] ...
 --mixedgauge <text> <rows> <cols> <mainperc> [<minilabel> <miniperc>] ...
 --msgbox <text> <rows> <cols>
 --passwordbox <text> <rows> <cols> [init]
 --passwordform <text> <rows> <cols> <formrows> [<label> <ylabel> <xlabel> <init> <yfield> <xfield> <fieldlen> <maxletters>] ...
 --pause <text> <rows> <cols> <secs>
 --radiolist <text> <rows> <cols> <menurows> [<name> <desc> <on|off>] ...
 --rangebox <text> <rows> <cols> <min> <max> [<init>]
 --textbox <file> <rows> <cols>
 --timebox <text> <rows> <cols> [<hh> <mm> <ss>]
 --treeview <text> <rows> <cols> <menurows> [<depth> <name> <desc> <on|off>] ...
 --yesno <text> <rows> <cols>

See 'man 1 bsddialog' for more information.
%

Here are some examples of what this tool can provide:

% bsddialog --calendar "Example calendar" 20 38 14 03



┌────────────────────────────────────┐  
│ Example calendar                   │  
│                                    │  
│                                    │  
│ Month            Year              │  
│ ┌───────────────┐┌───────────────┐ │  
│ │          March││           2024│ │  
│ └───────────────┘└───────────────┘ │  
│ ┌────────────────────────────────┐ │  
│ │    Sun Mon Tue Wed Thu Fri Sat │ │  
│ │                         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                          │ │  
│ └────────────────────────────────┘ │  
├────────────────────────────────────┤  
[  OK  ]     [Cancel]       │  
└────────────────────────────────────┘  
                                        

% bsddialog --inputbox "an inputbox" 8 20


┌──────────────────┐  
│ an inputbox      │  
│ ┌──────────────┐ │  
│ │              │ │  
│ └──────────────┘ │  
├──────────────────┤  
[  OK  ] [Cancel]│  
└──────────────────┘  
                      

% bsddialog --timebox "timebox" 8 20 10 27 05


┌──────────────────┐  
│ timebox          │  
│  ┌──┐ ┌──┐ ┌──┐  │  
│  │10│:│27│:│05│  │  
│  └──┘ └──┘ └──┘  │  
├──────────────────┤  
[  OK  ] [Cancel]│  
└──────────────────┘  
                      

% bsddialog --infobox "This is an infobox for giving info to the reader" 5 24


┌──────────────────────┐  
│ This is an infobox   │  
│ for giving info to   │  
│ the reader           │  
└──────────────────────┘  
                          

bsddialog --menu "Choose what to do:" 12 40 3 "Leave" "Hit the road" "Stay"
"Take a load off" "Think" "Ponder other options"


┌──────────────────────────────────────┐  
│ Choose what to do:                   │  
│                                      │  
│                                      │  
│ ┌──────────────────────────────────┐ │  
│ │    Leave Hit the road            │ │  
│ │    Stay  Take a load off         │ │  
│ │    Think Ponder other options    │ │  
│ └──────────────────────────────────┘ │  
├──────────────────────────────────────┤  
[  OK  ]     [Cancel]        │  
└──────────────────────────────────────┘  
                                          

These examples do not touch the large number of possible customizations.  I used a few of the pre-designed options which you may notice has any text within quotes.  When I tested the calendar it seems like the expected input might actually be a 4-digit year.  You will get feedback if the content would not fit within the rows and columns defined, some of the needed space is for the default output which might not be known before you test with an extra large row/column value.  Since this works within an xterm, I expect that the NO_COLOR environment variable would affect it as well, I am not sure that this has the other display options which portdialog has, possibly those would be good additions to it.

Since the dialog manpage is quite extensive I will provide the information about compatibility to the end of the manpage for both.  One thing to note about dialog is that it is actually an X application, rather than a terminal program, and bsddialog is a TUI.  The manpage excerpts are below.

DIALOG(1)		    General Commands Manual		     DIALOG(1)
COMPATIBILITY
       You may want to write scripts which run with other dialog "clones".

   Original Dialog
       First, there is the "original" dialog program to	consider (versions 0.3
       to 0.9).	 It had	some misspelled	(or inconsistent) options.  The	dialog
       program	maps  those  deprecated	 options  to the preferred ones.  They
       include:
	      Option	     Treatment
	      ---------------------------------
	      --beep-after   ignored
	      --guage	     mapped to --gauge
	      ---------------------------------

   Xdialog
       This is an X application, rather	than a terminal	 program.   With  some
       care,  it  is  possible	to  write  useful  scripts that	work with both
       Xdialog and dialog.

       The dialog program  ignores  these  options  which  are	recognized  by
       Xdialog:
	      Option		 Treatment
	      -----------------------------------------------
	      --allow-close	 ignored
	      --auto-placement	 ignored
	      --fixed-font	 ignored
	      --icon		 ignored
	      --keep-colors	 ignored
	      --no-close	 ignored
	      --no-cr-wrap	 ignored
	      --screen-center	 ignored
	      --separator	 mapped	to --separate-output
	      --smooth		 ignored
	      --under-mouse	 ignored
	      --wmclass		 ignored
	      -----------------------------------------------

       Xdialog's  manpage  has	a  section  discussing	its compatibility with
       dialog.	There are some differences not	shown  in  the	manpage.   For
       example,	the html documentation states

	      Note:  former  Xdialog  releases	used the "\n" (line feed) as a
	      results separator	 for  the  checklist  widget;  this  has  been
	      changed  to  "/"	in  Xdialog  v1.5.0 to make it compatible with
	      (c)dialog.  In your old scripts using the	Xdialog	checklist, you
	      will then	have to	add the	--separate-output  option  before  the
	      --checklist one.

       Dialog  has  not	 used a	different separator; the difference was	likely
       due to confusion	regarding some script.

   Whiptail
       Then there is whiptail.	For practical purposes,	it  is	maintained  by
       Debian  (very  little  work  is	done by	its upstream developers).  Its
       documentation (README.whiptail) claims

	      whiptail(1) is a lightweight replacement for dialog(1),
	      to provide dialog	boxes for shell	scripts.
	      It is built on the
	      newt windowing library rather than the ncurses library, allowing
	      it to be smaller in embedded environments	such as	installers,
	      rescue disks, etc.

	      whiptail is designed to be drop-in compatible with dialog, but
	      has less features: some dialog boxes are not implemented,	such
	      as tailbox, timebox, calendarbox,	etc.

       Comparing actual	sizes (Debian testing, 2007/1/10): The total of	 sizes
       for  whiptail,  the  newt,  popt	 and  slang  libraries is 757 KB.  The
       comparable number for dialog (counting ncurses) is  520 KB.   Disregard
       the first paragraph.

       The  second  paragraph is misleading, since whiptail also does not work
       for common options of dialog, such as the gauge box.  whiptail is  less
       compatible with dialog than the original	mid-1990s dialog 0.4 program.

       whiptail's  manpage borrows features from dialog, e.g., but oddly cites
       only dialog versions up to 0.4  (1994)  as  a  source.	That  is,  its
       manpage	refers	to  features  which  were  borrowed  from  more	recent
       versions	of dialog, e.g.,

       o   --gauge (from 0.5)

       o   --passwordbox (from Debian changes in 1999),

       o   --default-item (from	dialog 2000/02/22),

       o   --output-fd (from dialog 2002/08/14).

       Somewhat	humorously, one	may note that the popt	feature	 (undocumented
       in its manpage) of using	a "--" as an escape was	documented in dialog's
       manpage	about  a  year	before it was mentioned	in whiptail's manpage.
       whiptail's manpage  incorrectly	attributes  that  to  getopt  (and  is
       inaccurate anyway).

       Debian uses whiptail for	the official dialog variation.

       The  dialog  program ignores or maps these options which	are recognized
       by whiptail:
	      Option		Treatment
	      -------------------------------------------
	      --cancel-button	mapped to --cancel-label
	      --fb		ignored
	      --fullbutton	ignored
	      --no-button	mapped to --no-label
	      --nocancel	mapped to --no-cancel
	      --noitem		mapped to --no-items
	      --notags		mapped to --no-tags
	      --ok-button	mapped to --ok-label
	      --scrolltext	mapped to --scrollbar
	      --topleft		mapped to --begin 0 0
	      --yes-button	mapped to --yes-label
	      -------------------------------------------

       There are visual	differences which are not  addressed  by  command-line
       options:

       o   dialog  centers  lists  within the window.  whiptail	typically puts
	   lists against the left margin.

       o   whiptail uses angle brackets	("<" and  ">")	for  marking  buttons.
	   dialog uses square brackets.

       o   whiptail  marks the limits of subtitles with	vertical bars.	dialog
	   does	not mark the limits.

       o   whiptail attempts to	mark the top/bottom cells of a scrollbar  with
	   up/down  arrows.  When it cannot do this, it	fills those cells with
	   the background color	of  the	 scrollbar  and	 confusing  the	 user.
	   dialog  uses	 the  entire  scrollbar	 space,	thereby	getting	better
	   resolution.

BUGS
       Perhaps.

AUTHOR
       Thomas E.  Dickey	(updates for 0.9b and beyond)

CONTRIBUTORS
       Kiran Cherupally	- the mixed form and mixed gauge widgets.

       Tobias C.  Rittweiler

       Valery Reznic - the form	and progressbox	widgets.

       Yura Kalinichenko adapted the gauge widget as "pause".

       This is a rewrite (except as needed to provide  compatibility)  of  the
       earlier version of dialog 0.9a, which lists as authors:

       o   Savio Lam - version 0.3, "dialog"

       o   Stuart Herbert - patch for version 0.4

       o   Marc	Ewing -	the gauge widget.

       o   Pasquale De Marco "Pako" - version 0.9a, "cdialog"

$Date: 2021/01/17 17:25:01 $					     DIALOG(1)

And in comparison, bsddialog which being less extensive and purely a TUI.  It can still be contained by an Xterm without need of direct interaction with X itself, and so very likely is a bit less hefty, could be speedier, or take up less space installed.

BSDDIALOG(1)		    General Commands Manual		  BSDDIALOG(1)
COMPATIBILITY
       Outdated	 options  are  retained	for compatibility, properly equivalent
       options are used:
	     Obsolete			  Equivalent
	     --and-widget		  --and-dialog
	     --calendar	<text> 2 <cols>	  --calendar <text> 0 <cols>
	     --clear			  --clear-screen
	     --defaultno		  --default-no
	     --exit-label		  --ok-label
	     --help-tags		  --help-print-name
	     --item-help		  --item-bottom-desc
	     --keep-tite		  --alternate-screen
	     --no-items			  --no-descriptions
	     --no-label			  --cancel-label
	     --no-tags			  --no-names
	     --nocancel			  --no-cancel
	     --nook			  --no-ok
	     --separator		  --output-separator
	     --yes-label		  --ok-label

SEE ALSO
       bsddialog(3)

HISTORY
       The bsddialog utility first appeared in FreeBSD 14.0.

AUTHORS
       bsddialog    was	   written     by     Alfonso	  Sabato     Siciliano
       <asiciliano@FreeBSD.org>.

       bsddialog  provides  a  subset  of  the	functionality described	in the
       dialog manual.  The following features were reimplemented:

       Options:	 --and-widget,	--ascii-lines,	--backtitle,   --cancel-label,
       --clear,	    --colors,	  --cr-wrap,	--date-format,	  --defaultno,
       --default-button,    --default-no,    --default-item,	 --exit-label,
       --extra-button,	--extra-label,	--help,	 --help-button,	 --help-label,
       --help-status, --help-tags,  --hfile,  --hline,	--ignore,  --insecure,
       --item-help,   --keep-tite,   --max-input,   --no-cancel,   --nocancel,
       --no-items,  --no-label,	 --no-lines,  --no-ok,	--nook,	  --no-shadow,
       --no-tags,	--ok-label,	 --output-fd,	   --output-separator,
       --print-maxsize,	    --print-size,      --print-version,	     --quoted,
       --separate-output,  --separator,	 --shadow,  --single-quoted,  --sleep,
       --stderr,  --stdout,  --tab-len,	 --time-format,	 --title,   --version,
       --yes-label.

       Dialogs:	  --calendar,	--checklist,   --form,	 --gauge,   --infobox,
       --inputbox, --menu, --mixedform,	--mixedgauge, --msgbox,	--passwordbox,
       --passwordform, --pause,	--radiolist, --rangebox, --textbox, --timebox,
       --treeview, --yesno.

       Some feature differs in input, output, or behavior.   Compatibility  is
       not a priority for future development.

THANKS TO
       Baptiste	 Daroussin  <bapt@FreeBSD.org>,	 Ed Maste <emaste@FreeBSD.org>
       and Juraj Lutter	<otis@FreeBSD.org> for suggestions, help, and testing.

FreeBSD	13.2		      September	23, 2022		  BSDDIALOG(1)

Aside from a functionally similar tool and some things partly compatible, it is not truly a drop-in replacement as switching to portdialog from dialiog4 ports.  There are some notable mentions in UPDATING which should be considered.

From UPDATING:

20231010:
	dialog(1) has been replaced in base by bsddialog(1), while most of the
	time replacing a dialog(1) call by a bsddialog(1) call works out of the
	box, bsddialog(1) is not considered as a drop-in replacement for
	dialog(1).

	If you do depend on dialog(1) functionality, please install cdialog
	from ports:

	pkg install cdialog

From RELNOTES: (for FreeBSD 15.0.)

ff01d71e48d4:
	dialog(1) has been replaced by bsddialog(1)

This looks like a cool new thing for us to have available, bsddialog offers more flexibility to ease a greater variety of dialog types.  I might consider some rewrites to some of my scripts to include bsddialog if it is possible (I suspect so) which would make them even more friendly and easy to use I believe.  Look into what bsddialog is on your FreeBSD 14.0 system or CURRENT (aka 15.0) to see how you might take advantage of this interesting flexible dialog creation tool.

PS. This has been an effort for GPLinBase for removal of those items so licensed (few remain), bsddialog is one completed for that project.

Tuesday, March 12, 2024

Was dialog4ports now portconfig

Somewhere I ran across the existence of portconfig which is a drop-in replacement for dialog4ports.  I installed and I believe removed dialog4ports shortly after.  What I did not do was investigate the manpage and that documentation already installed.  I have now tried some of its options and saw how it is somewhat different.  I never thought to look at the manpage for dialog4ports but looking at it shows me that its replacement has some improvements also.  Portconfig is indeed a drop-in replacement, all that needs to be done to switch to it is remove the old and install the new.

This is more of an introduction than anything, so how about comparing the manpages.

DIALOG4PORTS(1)		    General Commands Manual	       DIALOG4PORTS(1)          PORTCONFIG(1)           FreeBSD General Commands Manual          PORTCONFIG(1)

NAME                                                                                    NAME
       dialog4ports -- a dialog	for FreeBSD ports                                            portconfig – port options

SYNOPSIS                                                                                SYNOPSIS
       Port environment	variables dialog4ports.                                              portconfig [-h | -v]

DESCRIPTION                                                                             DESCRIPTION
       dialog4ports is a utility for providing a dialog	interface to configure                The portconfig utility provides a TUI to customize the options to build a
       ports options                                                                         port.  The following options are available:

ENVIRONMENT                                                                                  -h      Display options, a short description and exit.
       The list	of environment variables dialog4ports:
                                                                                             -v      Show version and exit.
       D4PHEIGHT
	 Dialog	height.	(Default value:	0)                                                   The following user interface features are available:

       D4PMINHEIGHT                                                                          F1 key  General PORTS usage.
	 Minimal dialog	height,	for example:
	 if  D4PMINHEIGHT     5	 and  count of options elements(1-4) less than               Help button
	 D4PMINHEIGHT, then height will	extended to 5. (Default	value: 0)                            Specific port help, if pkg-help exists.

       D4PWIDTH                                                                              Space key
	 Dialog	width. (Default	value: 80)                                                           Select/deselect an option.

       D4PFULLSCREEN                                                                    ENVIRONMENT
	 Dialog	full screen mode. (Default: N)                                               The following environment variables can customize portconfig:

       D4PALIGNCENTER                                                                        NO_COLOR
	 Text in dialog	becomes	to center. (Default: N)                                              Disable colors if present and not an empty string (regardless of
                                                                                                     its value).
       D4PASCIILINES
	 Use ASCII character for line drawing. (Default: N)                                  PORTCONFIG_ALIGNCENTER
                                                                                                     Align options to center, “YES” to enable, default left.
SEE ALSO
       dialog(3)                                                                             PORTCONFIG_ASCIILINES
                                                                                                     Ascii characters to draw lines, “YES” to enable.
AUTHORS
       The dialog4ports	utility	was written by:                                              PORTCONFIG_FULLSCREEN
       Ilya A. Arkhipov	<rum1cro@yandex.ru>                                                          Fullscreen mode, “YES” to enable.
       with help from:
       Eitan Adler <eadler@FreeBSD.org>,                                                     PORTCONFIG_HEIGHT
       Baptiste	Daroussin <bapt@FreeBSD.org>,                                                        Fixed height, default autosize.
       Alexey Dokuchaev	<danfe@FreeBSD.org>
                                                                                             PORTCONFIG_MINHEIGHT
FreeBSD	13.2			 March 9, 2013		       DIALOG4PORTS(1)                       Minimum height, takes effect only with autosize.

                                                                                             PORTCONFIG_MINWIDTH
                                                                                                     Minimum width, takes effect only with autosize.

                                                                                             PORTCONFIG_NOLINES
                                                                                                     Do not draw lines, “YES” to enable.

                                                                                             PORTCONFIG_NOSHADOW
                                                                                                     “YES” to disable dialog shadow.

                                                                                             PORTCONFIG_WIDTH
                                                                                                     Fixed width, default autosize.

                                                                                           Compatibility
                                                                                             The following environment variables are available for compatibility:
                                                                                                   D4PALIGNCENTER        PORTCONFIG_ALIGNCENTER
                                                                                                   D4PASCIILINES         PORTCONFIG_ASCIILINES
                                                                                                   D4PFULLSCREEN         PORTCONFIG_FULLSCREEN
                                                                                                   D4PHEIGHT             PORTCONFIG_HEIGHT
                                                                                                   D4PMINHEIGHT          PORTCONFIG_MINHEIGHT
                                                                                                   D4PWIDTH              PORTCONFIG_WIDTH

                                                                                        EXIT STATUS
                                                                                             The portconfig utility exits 0 on success, and >0 if an error occurs.

                                                                                        SEE ALSO
                                                                                             ports(7)

                                                                                        AUTHORS
                                                                                             The portconfig utility was written by Alfonso Sabato Siciliano
                                                                                             <asiciliano@FreeBSD.org>.

                                                                                        THANKS TO
                                                                                             Baptiste Daroussin <bapt@FreeBSD.org> for suggestions, help, and testing.

                                                                                        FreeBSD 14.0-STABLE             August 4, 2023             FreeBSD 14.0-STABLE

There are some environment variables that are new.  We are all accustomed to the dialog4ports config screen but below is a rather clean and crisp portconfig screen for my unofficial minetest-dev port.

The following is what I placed in my user's .xinitrc file so that I will get the result above regardless of defaults.  I think I could use a different group of settings in the .cshrc file for root, which would function primarily if I were at console rather than in a terminal that I 'switched user' to root.  I have decided that I need the lines and I prefer not fullscreen, and centered looks best.  I can do either black and white like the image above or use the blue and white and black the way the former dialog4ports had.

##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##
## Portconfig options via environment vars              ##
##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##
# Disable colors if present and not an empty string (regardless of its value)
NO_COLOR="NO"
export NO_COLOR

# Align options to center, “YES” to enable, default left.
PORTCONFIG_ALIGNCENTER="YES"
export PORTCONFIG_ALIGNCENTER

# Ascii characters to draw lines, “YES” to enable.
PORTCONFIG_ASCIILINES="NO"
export PORTCONFIG_ASCIILINES

# Fullscreen mode, “YES” to enable.
#PORTCONFIG_FULLSCREEN=
#export PORTCONFIG_FULLSCREEN

# Fixed height, default autosize.
#PORTCONFIG_HEIGHT=
#export PORTCONFIG_HEIGHT

# Minimum height, takes effect only with autosize.
#PORTCONFIG_MINHEIGHT=
#export PORTCONFIG_MINHEIGHT

# Minimum width, takes effect only with autosize.
#PORTCONFIG_MINWIDTH=
#export PORTCONFIG_MINWIDTH

# Do not draw lines, “YES” to enable.
PORTCONFIG_NOLINES="NO"
export PORTCONFIG_NOLINES

# “YES” to disable dialog shadow.
PORTCONFIG_NOSHADOW="NO"
export PORTCONFIG_NOSHADOW

# Fixed width, default autosize.
#PORTCONFIG_WIDTH=
#export PORTCONFIG_WIDTH

Whether you define any of the variables above within your .cshrc or .xinitrc or another file, or at the moment directly on the commandline, you will still need to comply with the format and syntax for the shell that is used.  How you decide which options to use or how to configure it may take a little exploration to understand.  There do not seem to be shadows without color and it may be that you agree with me that lines are useful.  One other thing to consider when using a terminal is whether the font used has the line characters and if you prefer a font that has none you may want the ascii lines instead.

WARNING: The NO_COLOR environment variable will also be interpreted by xterm to disable colors which may eliminate one way portclippy displays the differences needing adjustment.

If you like white text on a black background, want to be very specific about the dimensions of the dialog, or prefer color without shadows or lines, then this portconfig will be able to do all this.  It may be that this would become the permanent replacement for dialog4ports but even if it does not, while it is maintained we have two options for our port configuration menu needs.

Wednesday, June 23, 2021

To history no more mergemaster

Just what I love to hear, and you should already guess that is sarcasm, that yet another tool is being retired.  Our old faithful mergemaster is being replaced by etcupdate which I will now have to become a bit more familiar with using.  The former tool is mentioned in my Kernel and world update post and page here, so I will revise those as well.  Also, once more, I run across this news accidentally and rather fortuitously, though my next Kernel and world update is on the horizon.  I only suggest it is good to know about this now primarily because the retirement is imminent, arguably not particularly sudden as the PR for it is from January this year.  Even so, that PR is intended to track the change, so a more precise end of usefulness is not perfectly known (to me).  There is also discussion about this change in a post on the FreeBSD forums which manages not to get heated but does echo a little displeasure at the relative silence until now regarding the change.

According to pieces of the forum posts and the PR, it appears that my decision to update my /usr/src in order to check for a more current /usr/src/UPDATING file, has caused me to lose the easier ways to switch to etcupdate.  I think I can certainly double my builds so that after the first one it will be in sync as it must be for the switch, or I could struggle to cause git to backrack the /usr/src directory to the prior version or whatever version (which I do not know) I used for my system as it is presently built.  It may be that there is another method which is less easy but a halfway between those yet only involves etcupdate.

I am now reading that the etcupdate method will usually mean one extra, it seems, manually initiated step each time, since I know that nearly every Kernel and World build and install process for me has differences between what it wants to do or include in various config files compared to what I have already.  I am not sure yet, not until I have been through the process at least once, or better, twice, quite what to expect.  I am going to assume at least one extra step compared to what I have been doing though for these past many years.

Here is the part of the etcupdate(8) manpage which tells me that I doubled my work:

   Bootstrapping
     The etcupdate utility may need to be bootstrapped before it can be used.
     The diff command will fail with an error about a missing reference tree
     if bootstrapping is needed.

     Bootstrapping etcupdate requires a source tree that matches the currently
     installed world.  The easiest way to ensure this is to bootstrap
     etcupdate before updating the source tree to start the next world upgrade
     cycle.  First, generate a reference tree:

           etcupdate extract

     Second, use the diff command to compare the reference tree to your
     current files in /etc.  Undesired differences should be removed using an
     editor, patch(1), or by copying files from the reference tree (located at
     /var/db/etcupdate/current by default)

     If the tree at /usr/src is already newer than the currently installed
     world, a new tree matching the currently installed world can be checked
     out to a temporary location.  The reference tree for etcupdate can then
     be generated via:

           etcupdate extract -s /path/to/tree

     The diff command can be used as above to remove undesired differences.
     Afterwards, the changes in the tree at /usr/src can be merged via a
     regular merge.

The second part suggests extracting a reference tree but I am not going to fall down into that pit.  Instead I will take my medicine, update and install kernel and world to the version of /usr/src I have now, then bootstrap as described above. After all that, I can do another update when /usr/src is revised with the next git pull (yeah, I don't worry about using gitup for this, but one could).

Somewhat distressingly the etcupdate extract does not itself provide any output or clue that it is doing the job, so shortly after noticing this, I ran htop in another xterm to see  The process was fairly quick so it shouldn't be too much concern but I would guess that futher steps will certainly show whether it did its job to setup for bootstrap or not  The second part, mentioned above is not as clear as I think it should be, not only to say "use the diff command" which I will have to check the manpage to see if it is a sub-command of etcupdate, but that the manpage ought to also show "etcupdate diff" if this is the case.

     etcupdate diff [-d workdir] [-D destdir] [-I patterns] [-L logfile]
   Diff Mode
     The diff mode compares the versions of files in the destination directory
     to the “current” tree and generates a unified format diff of the changes.
     This can be used to determine which files have been locally modified and
     how.  Note that etcupdate does not manage files that are not maintained
     in the source tree such as /etc/fstab and /etc/rc.conf.
So it is as I suspected and would have known if I had read through the whole manpage five or six times, a function of etcupdate but the problem is that without the example, there is no mention of where the default locations are for the extract and what to use for workdir and destdir.  Maybe this information is also "buried" in the manpage in a seperate place, and it turns out that suggesting it was buried is a bit too harsh, BUT, an example which uses the defaults would be much more helpful than "use the diff command" since this bootstrapping must be done right the first time.  These options provide a way to set alternate locations so maybe an example using those defaults would be excessive, but should still show the command as otherwise the mention is a little vague.
     -D destdir         Specify an alternate destination directory as the
                        target of a merge.  This is analogous to the DESTDIR
                        variable used with ‘make installworld’.  The default
                        destination directory is an empty string which results
                        in merges updating /etc on the local machine.

     -d workdir         Specify an alternate directory to use as the work
                        directory.  The work directory is used to store the
                        “current” and “previous” trees as well as unresolved
                        conflicts.  The default work directory is
                        /var/db/etcupdate.

I am going to try simply etcupdate diff and see what it does, maybe it will give feedback on any additional information it might need before it begins.  It just runs and goes through most of the usual files that mergemaster would, to see what has changed from 'stock' according to the output below.

root@ichigo:/usr/src # etcupdate extract
root@ichigo:/usr/src # etcupdate diff
Index: /.cshrc
===================================================================
--- /.cshrc (stock)
+++ /.cshrc (local)
@@ -44,3 +44,4 @@
endif

 endif
+source /root/.cshrc-personal
Index: /root/.cshrc
===================================================================
--- /root/.cshrc (stock)
+++ /root/.cshrc (local)
@@ -44,3 +44,4 @@
endif

 endif
+source /root/.cshrc-personal
Index: /root/.login
===================================================================
--- /root/.login (stock)
+++ /root/.login (local)
@@ -7,6 +7,15 @@

 # Query terminal size; useful for serial lines.
 if ( -x /usr/bin/resizewin ) /usr/bin/resizewin -z
+# -z     Do nothing unless the current kernel terminal size is zero.
+# This is useful when run from a user's profile (shell startup) scripts:
+# querying the window size is required for serial lines, but not when
+# logging in over the network, as protocols like TELNET or SSH already
+# handle the terminal size by themselves.
+setenv MANWIDTH 240
+setenv MANCOLOR yes
+#setenv LC_CTYPE POSIX

 # Uncomment to display a random cookie on each login.
 # if ( -x /usr/bin/fortune ) /usr/bin/fortune -s
+ if ( -x /usr/bin/fortune ) /usr/bin/fortune -s
Index: /etc/master.passwd
===================================================================
--- /etc/master.passwd (stock)
+++ /etc/master.passwd (local)
@@ -1,6 +1,6 @@
 # $FreeBSD$
 #
-root::0:0::0:0:Charlie &:/root:/bin/csh
+root::0:0::0:0:Charlie &:/root:/bin/csh
 toor:*:0:0::0:0:Bourne-again Superuser:/root:
 daemon:*:1:1::0:0:Owner of many system processes:/root:/usr/sbin/nologin
 operator:*:2:5::0:0:System &:/:/usr/sbin/nologin
@@ -27,3 +27,35 @@
 hast:*:845:845::0:0:HAST unprivileged user:/var/empty:/usr/sbin/nologin
 tests:*:977:977::0:0:Unprivileged user for tests:/nonexistent:/usr/sbin/nologin
 nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin
+tigersharke::1001:1001::0:0:tigersharke:/usr/home/tigersharke:/bin/tcsh
+eviltwin::1002:1002::0:0:My Evil Twin:/usr/home/eviltwin:/bin/tcsh
+messagebus:*:556:556::0:0:D-BUS Daemon User:/nonexistent:/usr/sbin/nologin
+polkitd:*:565565::0:0:Polkit Daemon User:/var/empty:/usr/sbin/nologin
+saned:*:194:194::0:0:SANE Scanner Daemon:/nonexistent:/bin/sh
+squid:*:100:0::0:0:squid caching-proxy pseudo user:/var/squid:/usr/sbin/nologin
+vboxusers:*0:920::0:0:Virtualbox user:/nonexistent:/usr/sbin/nologin
+_ntp:*:2::0:0:NTP Daemon:/var/empty:/usr/sbin/nologin
+cups:*:193:19::0:0:Cups Owner:/nonexistent:/usr/sbin/nologin
+tests:*:977:6534::0:0:Unprivileged user for tests:/nonexistent:/usr/sbin/nologin
+git_daemo64:964::0:0:git daemon:/nonexistent:/usr/sbin/nologin
+polkit:*:5662::0:0:PolicyKit User:/nonexistent:/usr/sbin/nologin
+_tss:*:601::daemon:0:0:TrouSerS user:/var/empty:/usr/sbin/nologin
+avahi:*:558:8::0:0:Avahi Daemon User:/nonexistent:/usr/sbin/nologin
+cyrus:*:60:60:0:0:the cyrus mail server:/nonexistent:/usr/sbin/nologin
+colord:*:970:970::0:0:colord color management daemon:/nonexistent:/usr/sbin/nologin
+clamav:*:1006::0:0:Clamav Antivirus:/nonexistent:/usr/sbin/nologin
+spamd:*:58:58:0:0:SpamAssassin user:/var/spool/spamd:/usr/sbin/nologin
+minetest:*:976:976::0:0:& server:/nonexistent:/usr/sbin/nologin
+_sndio:*:702:702::0:0:sndio privsep:/var/empty:/usr/sbin/nologin
+slurm:*:8::0:0:SLURM Daemon:/nonexistent:/usr/sbin/nologin
+pulse:*:563:563::0:0:PulseAudio System User:/nonexistent:/usr/sbin/nologin
+sddm:*:219:219::0:0:SDDM Display Manager user:/var/lib/sddm:/usr/sbin/nologin
+mysql:*:88:88::0:0:MySQL Daemon:/var/db/mysql:/usr/sbin/nologin
+webcamd:*:145:145::0:0:Webcamd user:/var/empty:/usr/sbin/nologin
+fahclient:*:246:246::0:0:Folding@home User:/nonexistent:/usr/sbin/nologin
+qbittorrent:*:850:850::0:0:qBittorrent Daemon User:/var/db/qbittorrent/conf:/usr/sbin/nologin
+mud:*:97:97::0:0:MUD Owner:/nonexistent:/bin/sh
+bnetd:*:700:700::0:0:Bnetd user:/nonexistent:/usr/sbin/nologin
+wolfpack:*:138:138::0:0:Wolfpack Empire Server:/usr/local/share/wolfpack:/usr/sbin/nologin
+mcserver:*:199:199::0:0:Minecraft Server:/nonexistent:/bin/sh

Removed: /etc/regdomain.xml

Index: /etc/hosts
===================================================================
--- /etc/hosts (stock)
+++ /etc/hosts (local)
@@ -10,8 +10,8 @@
 # not be consulted at all; see /etc/nsswitch.conf for the resolution order.
 #
 #
-::1    localhost localhost.my.domain
-127.0.0.1      localhost localhost.my.domain
+::1    localhost ichigo.underworld
+127.0.0.1      localhost ichigo.underworld
 #
 # Imaginary network.
 #10.0.0.2      myname.my.domain myname
@@ -29,3 +29,8 @@
 # numbers but instead get one from your network provider (if any) or
 # from your regional registry (ARIN, APNIC, LACNIC, RIPE NCC, or AfriNIC.)
 #
+#209.94.190.55 distcache.FreeBSD.org
+#38.109.202.29 www.ixsystems.com
Index: /etc/loin.conf
===================================================================
--- /etc/loconf (stock)
+++ /etc/loconf (local)
@@ -51,6 +5@@
:charset=\
:lang=C.UTF-8:

+
 #
 lle of common class names - forward them all to 'default'
 # (login wou normally do this anyway, but having a class name
@@ -86,6 +87,11 @@
:ignorenol\
:memorylocked=unlimited:\
:tc=defau
+:charset=UT:\
+:lang=en_US.UTF-8:\
+:setenv=LC_LATE=C:
+:setenv=PATHOCALE=/usr/local/lib/X11/locale:\
+:path_locale=/usr/local/lib/X11/locale:\

 #
 # Russians Accounts. Setup proper environment variables.
Index: /etc/nt.conf
=================================================================
--- /etc/ntnf (stock)
+++ /etc/nf (local)
@@ -37,7  @@
 # the nex, and replace CC with the country's abbreviation.
 # Make sure that the hostname resolves to a proper IP address!
 #
-# pool 0.ol.ntp.org iburst
+pool 0.U.ntp.org iburst
+pool 0.freebs.pool.ntp.org iburst
+pool 0.netpool.ntp.org iburst
+pool 0.ope.pool.ntp.org iburst
+pool 0.ope.pool.ntp.org iburst

 #
 # Tonfi a specific server, such as an organization-wide local
Index: /etc/gup
===============================================================
--- /etc/gro(stock)
+++ /etc/group (local)
@@ -1,12 +1,12@@
 # $FreeBS #
-whe:*:
+wheel:*:0:root,tigersharke
 daemon:*:1:  kmem:*:2:
 sys:*:3:
*:4:
-operatoroot
-mail:*:6:
+operator:oot,tigersharke
+mail:*:6:clamav
 bin:*:7:
 news:*:8 man:*:9:
@7,9 +17,12 @@
 smmsp:*:2
 mailnull:*:
 guest:*:31:
-video:*:44:
+audio:*:43:ersharke,minetest
+video:*:44:tigersharke,sddm,root
 bind:*:5
+spamd:*:58
 unbound:*:5
+cyrus:*:60:
 proxy:*:62:
 authpf:*:63
 _pflogd:*:64
@@ -29,9 +32,4 @@
 network:*
 audit:*:77:
 www:*:80:
+mysql:*:8ud:*:97:
+squid:*:100:
+clamav:*:106:
 ntpd:*:123:
+wolfpack:*:138:
+webcamd:*:145:
 _ypldap:*:160:
+cups:*:193:
+saned:*:194:
+mcserver:*:199:
+sddm:*:219:
+_ntp:*:233:
+fahclient:*:246:
+slurm:*:468:
+messagebus:*:556:
+pulse-rt:*:557:
+avahi:*:558:
+polkit:*:562:
+pulse:*:563:
+pulse-access:*:564:
+polkitd:*:565:
+_tss:*:601:
+bnetd:*:700:
+_sndio:*:702:
 hast:*:845:
+qbittorrent:*:850:
+vboxusers:*:920:tigersharke
+git_daemon:*:964:
+colord:*:970:
+minetest:*:976:
 tests:*:977:
+tharald:*:1003:
+plugdev:*:1011:tigersharke,root
+tigersharke:*:1012:tigersharke
 nogroup:*:65533:
 nobody:*:65534:
Index: /etc/devfs.conf
===================================================================
--- /etc/devfs.conf (stock)
+++ /etc/devfs.conf (local)
@@ -41,3 +4 @@
 # Allow ms of group operator to cat things to the speaker
 #own   speaker root:operator
 #perm  speak 0660
+
+# ad A21 2020
+link    acd0   cdrom
+link    acd0   dvd
+perm    acd  0660
+perm    cd0   0660
+perm    pass  0660
+perm    pass  0660
+perm    pass  0660
+perm    pass  0660
+perm    xpt0  0666
root@ichigo:/r/src #

The diff above looks fine to me, although there is one explanatory line in one file I would prefer to keep.  Something with the copy-paste or other manipulation of the xterm to get a complete copy-paste has caused some text damage, but you can get the idea of how the diff result looks anyway.  The manpage paragraph below should provide any sort of example on how one would make an adjustment with patch as suggested, I cannot guess how this wouldbe done, so for bootstrapping I will lose the ntp.conf line "# pool 0.CC.pool.ntp.org iburst" which makes the rest of the comment above it a bit less clear.  Much of the differences between the files which etcupdate scrutinized were not long go cleaned up a bit, to organize and group my changes together and make the default and my revised version match more closely.  Perhaps it has now been enough time that the /usr/src directory can be updated and I can rebuild (world takes 1.5 hours, kernel in 45 minutes I think) and reinstall and try etcupdate after.  I decided to look at /etc/ntp.conf to see what it was like, the line I wanted was gone, so I restored it, then looked at some other settings in the file and made some minor revisions.  I am guessing it should come up in the next etcupdate after the rebuilds and reinstalls, and might expect me to resolve, but I won't know until I do so.

In the place of mergemaster -p I used etcupdate -p which I was reasonably sure about.  After that, I used etcupdate -n and tried etcupdate status but both gave no output, all I could do is bite the bullet and try just etcupdate.  None of it gave any output this time around, so perhaps in a future update to my world and kernel there will be a bit more noise from etcupdate.  So for now, I will stick to the same procedure for that next time, to go ahead with the prepare step and then after installing world, the dry run and finally run of etcupdate.  Until experience proves differently and I must make adjustments this seems reasonable and safe.  This command/tool has been around a while already and except for some tweaks to the manpage, it seems to be a good tool to replace mergemaster.  I look forward to using it in the future, especially the next time or two, to see if it prompts me for anything or provides more output.

How many of you read the title as I humorously intended?  "To history no more" meaning the record of commands, 'history' and also "no more mergemaster" as most obvious it is being retired, there is also the other blatant meaning, just that mergemaster would be relegated to history.  I wasn't sure what title to use until that struck me as perfect.

Monday, February 8, 2021

Time to retire, HAL

  Remove hal

Hal has been introduced as part of the Gnome2 desktop and used in many
desktop application as an abstraction on the hardware layer, it has been quickly
deprecated, but alternatives took time to land in freebsd.
In most cases alternatives are now in place or upstreams dropped entirely
support for HAL.

As a result it is time to retire HAL

We might not all have used sysutils/hal or even known that it was mostly silently working in the background as any good daemon process should.  Today marks the final nail in its coffin, as it has been deprecated for quite some time and alternatives rolled out and have now been in place for ages.  If for nostalgia or familiarity or uncertainty any of us may still have or chose to have installed it after it was already set on its journey to eventual FreeBSD expiration, there will be a little cleanup to do on our own systems.  Surely we can all safely remove sysutils/hal if it remains, and that is a very simple operation.

pkg remove hal

The next two adjustments are likely less familiar to most users.  We need to remove haldaemon as both a user and a group.  Since I knew how to edit the password file with vipw (which incorporates use of vi), I used that to remove the haldaemon line.  It turns out that there is another way that possibly ought to have been more obvious, but how often does an admin who uses a pc alone with no other human users on their system ever add or remove them?  The command is rmuser but since my passwd no longer includes haldaemon, I am not sure what it will do but I suspect it will give an error.

rmuser: user (haldaemon) does not exist in the password database.

I have two choices, remove the group as a seperate operation as I planned before discovering rmuser or I could re-create the haldaemon user, then use rmuser which should then work.  I can show how both methods look, but we can remove the group now and then re-create both user and group before using rmuser to see how that looks.

It turns out that editing the group file to revise or remove a group is a fairly simple operation, we can use vigr (which also incorporates use of vi), but lets create a haldaemon account and group to show how rmuser works.

When sysutils/hal was installed, it automatically created the user and group haldaemon but did not also create a home directory.  We can simulate this by using adduser in a similar fashion, answering its prompts the same as below or by using

pw useradd haldaemon -u 560 -g 560 -d /nonexistent -s /sbin/nologin -c "HAL Daemon User"

since I did not remove the haldaemon group.

rmuser haldaemon
Matching password entry:

haldaemon:*:560:560::0:0:HAL Daemon User:/nonexistent:/sbin/nologin

Is this the entry you wish to remove?  y
Remove user's home directory (/nonexistent)?  y
Removing user (haldaemon):
 mailspool home passwd.

Checking the content of /etc/group using vigr proves that haldaemon group is no longer present there.  The above output also mentions the other locations where haldaemon if present would be removed: mailspool, home, and passwd. The next time a similar daemon, which is presently devd, or any other daemon or user might need to be removed, the same steps would be used.  Further information about account modification is available in the FreeBSD handbook.

Since we have modified /etc/passwd there is another thing we must do in order to keep our system reliable. We need to synchronize those changes with /etc/master.passwd by using the command below (entire path provided for precision but /usr/sbin/ can be omitted), more detail can be found by man 8 pwd_mkdb which includes one option (-C) to simply verify no errors were made with any edit.

/usr/sbin/pwd_mkdb -p /etc/master.passwd

One more detail that will be discovered with a reboot once all of the above is accomplished, that is, if your /boot/loader.conf (or possibly /etc/rc.conf) still has a line to start the hal daemon process.  Edit the appropriate file to remove such a line as below and the forgotten step will not haunt you in the future, but if you received an error at boot, that it couldn't load hal or a similar error, you'd know how to fix it I hope but here I describe how.

hald_enable="YES"

Thursday, December 31, 2020

The end of flash


Adobe was not the originator of flash, nor was it the only technology created to bring various multimedia effects to web pages.  Today is the last day for Adobe Flash, and so a number of FreeBSD ports will find themselves made defunct, already long deprecated but soon deleted.  It has been a sort of zombie tech which was supposed to have been dead and buried long ago, but has continued to remain.  We can now finally be satisfied that a stake will be driven into its heart, its bones salted and burned, and never will it haunt us.

This will not be the only group of things which vanish in the coming weeks, as the addons for web browsers which were designed to control flash or remove flash will now also no longer be needed.  I strongly suspect however, that one remnant of flash will persist, a special sort of cookie which was intended to be persistent and resistant to removal.  One of the most odd uses of flash may be aspects of security controls, such as a type of second factor authentication, or password entry on some sites.  I say that it is odd due to the fact that flash was one of the technologies used on the web and web browsers which has to have been among the most frequently patched for security exploits.

I do not mourn the passing of flash, I rejoice!  Does anyone remember Beatnik, an amazing technology which brought music and some other effects to the web?  How about the truly artistic and interesting web pages from authors such as Doc Ozone?  The web these days has become a bit sterile and tired.  We can only hope that the successors of flash will attempt to be as grand but without all of the troubles, mischief, security lapses.  I also hope that any trend on the web be toward standards that are universal, that do not require one operating system over any other, or ever become proprietary which would mean the exclusion of many not-so-mainstream users such as of FreeBSD.

Thursday, December 17, 2020

So long and thanks for all the fetchs

No sooner than my blog post about the retirement of svn in lieu of git becomes popular, do I hear of another transition.  I guess I should count myself lucky that poudriere is not planned to be obsolete in a month.  It is even more obvious that I am quite out of the loop with regard to these sorts of changes but as both are rather significant one would believe that there would be a bit more noise about them.  I frequently read the quarterly FreeBSD reports but do not recall either transition being mentioned.  Did you know that portsnap was set to be retired?  There was a mailing list mention in August, and a FreeBSD forum mention once upon a time.

Portsnap always felt speedy and efficient.  It has served me well.  Now I will have to move poudriere back to svn, revise my little ports tree update script back to svn, and look into git or svnup or other tools to see which works best for me.  Thanks to Jailer and his post for helping me to discover that I have to retire portsnap.  I need to find the appropriate retirement schedule for it.  The other issue I have run into on my system is the difference between what I was receiving from portsnap in comparison to svn.  I might guess now that portsnap was older but that depends upon various settings for which branch/version of the ports tree each tool downloaded.  I will also eventually be revising some other blog posts to indicate my chosen alternative to portsnap.  For now, the forum post below may give some ideas on what I might try.

What I have discovered since then is that there is a reasonably simplified tool which can handle both ports tree updates whether quarterly or not, as well as the source for kernel and world updates.  As I mention in another blog post, net/gitup was most certainly a tool without fanfare and it is what I have chosen for keeping my ports tree up-to-date outside of my poudriere jail.

Wednesday, December 16, 2020

VCS changes again

Maybe some of you do better at keeping track of scheduled events, or you're a bit more in touch with the process.  Just a few moments ago I saw a tweet warning "heads up!"

Within the last few days I had noticed that it was 20-something days since my last reboot or update, so I did an svn update of /usr/src and rebuilt, reinstalled.  How serendipitous that was.  According the the wiki page mentioned in the tweet, this might not be possible later this month.  The image below might quickly become invalid but that was what I saw, note the 19th.

 

For some time FreeBSD has had svnlite in base which could be used to obtain an updated /usr/src or /usr/ports but with the switch to git I wonder if there will be git-lite or similar.  I would have to believe that poudriere would no longer be able to use svn+https to get /usr/src or /usr/ports.  So although the capability would not be removed since anyone could still use svn themselves for their private repo, it won't be for official FreeBSD.  Since I still have until December 18th for certain, I will make sure to do one last update to my /usr/src.  The small bit of trivia would be that once upon a time FreeBSD switched from CVS to SVN (2008) and they decided then that Git wasn't capable.  I cannot say whether Git changed or something else did but its surely good enough now, but for how long?  What will be the successor to Git and will it be BSD or MIT or similarly licensed?  If removing GPL from base would prevent git from being part of it, is there a non-GPL client much like svnlite which could be included?

They keep this around for entertainment:  https://wiki.freebsd.org/VCSWhy

I will have to investigate whether there is a way to do much of the same things as I had with svn, because after so many years I finally had everything figured out and the details put in one easy to access place.  I cannot imagine that all of the methods below have no equivalent. 

Frequently viewed this week