fcommit

fcommit

pdt 2015/3/2: I haven't had too much time to spend on this recently, but I have been nudging it forward a little, and now have single file executables for Linux and Windows - follow the link below.


fcommit is a fairly simple Tk interface for use with Fossil repositories.

I've implemented a large proportion of the features I want, and have started to use it for my own projects. I need to add a few more features, use it a bit more, see: http://www.p-code.org/fcommit for a recent development version.

The main GUI window is just about complete:

  • Modified tab shows modified files. Files can be included/excluded for a commit.
  • Files listed in the modified tab can be selected and reverted.
  • Extras tab shows extra files in checkout. Files can be selected for a commit.
  • Any files in the checkout that have been renamed or deleted appear in the missing tab. From there they can be selected as renamed or deleted for the next commit, or can be reverted.
  • A commit to button selects branch to commit to, or can be used to specify a new branch.
  • Text area for commit message.
  • Clicking on the Commit... button brings up a confirm dialog with a small summary.

fcommit image


Toolbar currently includes:

  • Diff button - shows diff for current checkout.
  • History button - brings up a fairly simple history dialog, with clickable links to show diffs.
  • Update Current button.
  • Switch Checkout button.
  • Merge button.
  • Pull button.
  • Push button.

Additional toolbar buttons are for showing a menu, and for refreshing GUI. Currently the menu includes:

  • View -> Browser Interface, to show fossil ui.
  • View -> Log, to display a log of fossil commands executed by the GUI, and the resulting output.
  • View -> Diff, for generating diffs between selected versions.
  • Change Directory..., for changing working directory.
  • Recent -> submenu with recent working directories.
  • Settings -> Enable Autosync, checkbutton menu entry for setting autosync.
  • Settings -> Ignore Files..., will show a dialog for managing which files in a source tree should be ignored.
  • Settings -> Remote Repository URL..., displays a dialog for viewing and modifying remote repository URL.
  • Undo, fossil undo.
  • Redo, fossil redo.
  • Rebuild Repository..., displays a dialog for selecting a repository to rebuild.
  • New -> Empty Repository..., brings up a dialog for creating a new repository.
  • New -> Cloned Repository..., displays a dialog for cloning a repository.
  • New -> Source Tree..., displays a dialog for checking out a new source tree.

The log window can also be displayed by pressing Ctrl-L. This works at all times, including when the GUI is busy, or a modal dialog is being displayed, for example when an operation is in progress.


The image below shows the fcommit history dialog, showing history for the Fossil project.

fcommit history image


Below is an image of the switch checkout dialog. For branches and tags, a combobox is displayed in the dialog, where the branch or tag may be typed or selected. Version ID can also be entered. Alternatively a version can be selected in the history dialog, then when the switch checkout toolbar button is pressed, the switch checkout dialog opens showing checkout by ID with the text field already filled in. Pressing the dialog's checkout button completes the action.

fcommit switch branch image


The image below shows the command log. Pressing the update toolbar button issues the fossil update command. The command and its output is shown in the log window. An update can be undone by selecting undo from the main menu. Before performing an undo, a dialog is shown to confirm.

fcommit command log image


To work on Android, the GUI needs some work. Higher screen resolutions mean the toolbar icons are too small, but there a few other issues as well. The example image below shows the Fossil repo being cloned on my Samsung tablet.

fcommit-androwish image


discussion

DKF: Is there a way to get the branch rendering info used in the Fossil web ui? That might help you do a prettier branch rendering.

pdt: For branch rendering, fossil info provides parent id and merged-from id, so that's readily available. In the fcommit history dialog you can mousewheel (or use arrow keys) to move through the history, so it works a bit different to the web ui, which works on a page by page basis (e.g. 20 or 200 entries).

aspect: have I missed the link to source code or a download? Really looking forward to getting a gui fossil client in front of some people here :-).

pdt: It's not finished yet, but it's available here: http://www.p-code.org/fcommit .