Using gitsync to Update pfSense® Software Between Snapshots¶
Most often upgrading to a new development snapshot is the best way to get updated code when tracking a development version of pfSense® software (alpha, beta, RC, etc).
However, since new snapshots are only built once per day in most cases, one can
often get by with pulling new code from the pfSense
CE Git repository
instead of reloading a whole new snapshot. This is useful for testing code
changes committed since the last snapshot. This process is known as a
gitsync
.
Warning
This process is not compatible with pfSense Plus software.
Warning
A gitsync
only synchronizes PHP changes without any binary changes. At
times, PHP changes require associated binary changes that only come from an
upgrade using a snapshot or other upgrade image.
Unless development is followed closely and the ramifications of all changes are understood, or unless breakage is not a concern, do not use this!
For most users, this action should only be taken if directed to do so by a developer.
This only works with code or files that are not compiled. For example: PHP Code, configuration files, GUI pages, etc.
There are two ways to perform a gitsync
, both perform the same function:
- Method 1:
From the console menu, press option
12
to start a developer shell, then type:> playback gitsync master
- Method 2:
From a normal shell (console menu option 8), type the following command:
# pfSsh.php playback gitsync master
Warning
This must be run from an actual shell prompt over SSH or at the console. Do not attempt to run this through the GUI.
The master
part of the command tells the gitsync process to grab the
code for the master
branch, a.k.a. HEAD, main, etc.
That can be replaced with a version-specific branch such as RELENG_x_y_z
.
For example, on 2.7.2-RELEASE, to sync post-release code changes, use:
# pfSsh.php playback gitsync RELENG_2_7_2
Troubleshooting¶
The gitsync
script attempts to install git
automatically. However,
if an error occurs the git
package may need to be added manually. This
can be done from a shell prompt:
# pkg install git
Git Protocol changed/URL Moved¶
Occasionally something on GitHub changes and renders an old clone of the
repository broken. The most recent change was a change to disable certain
protocols in favor of only using HTTPS. In this case it’s necessary to delete
the old clone so that gitsync
can create a fresh copy.
# rm -rf /root/pfsense/
# pfSsh.php playback gitsync master