Skip to content

Releases: G-Node/gin-cli

Version 1.2

25 Jan 17:57
Compare
Choose a tag to compare

Changes

  • Merge conflicts:
    • Downloads will fail with useful error messages if a merge conflict occcurs.
    • If the conflict is between two annexed files, both versions of the file are kept and a warning is presented.
  • Push to target: Pushing to a specific target remote does not push git files and metadata to all remotes like before. Only the named remote is updated.
  • Commit progress removed: The number of files to be added is no longer counted before doing a gin commit so no progress bar is shown. This was removed for performance reasons.

Bug fixes

  • Fixed bug when uploading after annexed file was deleted. The client would try to annex-copy the deleted file if it was named and fail with an error.
  • Fixed bug where files with unicode characters would cause errors. The client now disabled quotepath in the local git configuration to avoid quotes in filenames that interfere with parsing and JSON encoding.

Internals

  • Token reuse: Logging in reuses any existing client token to avoid flooding the user's token list.
  • Token request function: NewToken() function can be called to retrieve a new token without creating a key pair or storing it on disk.

Relevant PRs

  • #214: Split token request code out of Login into new method
  • #215: Reuse tokens
  • #217: Merge conflict error messages and handling
  • #222: Push only to target remote
  • #223: Bugfix: Do not try to annex-copy deleted files
  • #228: Disable 'quotepath' in local git configuration

Version 1.1

17 Aug 12:29
Compare
Choose a tag to compare

Bug fixes

  • Fixed a couple of bugs relating to the add-server command.
    • The port was not being stored properly when using the input prompts to set up a new server configuration.
    • In some cases, the host key was not written to the known_hosts file in the format required (especially for localhost).

Relevant PRs

  • #213: Localhost key fix

Version 1.0

08 Aug 08:55
Compare
Choose a tag to compare

Changes

  • New commands
    • Local workflows:
      • gin init: Initialises a directory as a gin repository without creating a repository on a server.
      • gin commit: Records changes in the local repository without performing an upload and without requiring a remote or an internet connection.
    • Versioning
      • gin version: Rolls back files or directories to older versions. With the --copy-to flag, retrieves older files without overwriting the current version and copies them to a specific location.
    • Remotes
      • gin add-remote: Adds a remote to the current repository for uploading and downloading. This also brings support for using directory paths on the local filesystem as "remotes" (e.g., external hard drives, network attached storage), without the need to have a GIN server.
      • gin remove-remote: Removes a remote from the current repository.
      • gin remotes: Lists remotes configured for a repository and shows the default remote used for gin upload.
      • gin use-remote: Switches the repository's default upload remote.
      • The gin upload command now accepts a --to argument for uploading annexed content to a specific, non-default remote.
    • Servers
      • gin add-server: Adds a new GIN server to the global client configuration.
      • gin remove-server: Removes a GIN server from the global client configuration.
      • gin servers: Lists the configured servers and shows the default server used for web queries.
      • gin use-server: Switches the default server.
      • The login, logout, create, info, keys, repos, repoinfo, and get commands now accept a --server argument for querying or operating on a specific, non-default server.
  • Progress bars for file operations: Some operations don't have a per-file progress (add, lock, unlock). There is no partial unlock state for a file, for instance. For these commands, the output shows the overall progress along with the number of total files that are being affected.
  • Smaller logfiles: The log file is now limited to 1 MB. No more ever-growing logs.
  • The client is now usable even without git-annex installed, but commands that require git and git-annex are disabled.
  • Progress is now also printed when uploading git files.
  • Minimum required got-annex version: 6.20171109

Bug fixes

  • Fixed a bug where file tracking would register a type change in git when working with direct mode repositories (e.g., on Windows).
  • Fixed a bug where the file status (from gin ls) was being incorrectly reported when working in direct mode (e.g., on Windows). Direct mode repositories should now show the exact same output as indirect mode ones.

Relevant PRs

  • #191: New command: gin version
  • #192: Versioning "copy to"
  • #197: Transfer rates
  • #199: gin commit: Working without remotes
  • #201: Fix file adding in direct mode
  • #202: Log trimming
  • #203: Progress bars for file operations
  • #204: Fix for ls file status in direct mode
  • #205: New command: add-remote
  • #206: Handle multiple server configurations
  • #210: Disable commands that rely on git/annex when either is not available
  • #211: Git transfer output

Version 1.0beta

12 Jun 15:48
c528792
Compare
Choose a tag to compare
Version 1.0beta Pre-release
Pre-release

Changes

  • New commands
    • Local workflows:
      • gin init: Initialises a directory as a gin repository without creating a repository on a server.
      • gin commit: Records changes in the local repository without performing an upload and without requiring a remote or an internet connection.
    • Versioning
      • gin version: Rolls back files or directories to older versions. With the --copy-to flag, retrieves older files without overwriting the current version and copies them to a specific location.
    • Remotes
      • gin add-remote: Adds a remote to the current repository for uploading and downloading. This also brings support for using directory paths on the local filesystem as "remotes" (e.g., external hard drives, network attached storage), without the need to have a GIN server.
      • gin remove-remote: Removes a remote from the current repository.
      • gin remotes: Lists remotes configured for a repository and shows the default remote used for gin upload.
      • gin use-remote: Switches the repository's default upload remote.
      • The gin upload command now accepts a --to argument for uploading annexed content to a specific, non-default remote.
    • Servers
      • gin add-server: Adds a new GIN server to the global client configuration.
      • gin remove-server: Removes a GIN server from the global client configuration.
      • gin servers: Lists the configured servers and shows the default server used for web queries.
      • gin use-server: Switches the default server.
      • The login, logout, create, info, keys, repos, repoinfo, and get commands now accept a --server argument for querying or operating on a specific, non-default server.
  • Progress bars for file operations: Some operations don't have a per-file progress (add, lock, unlock). There is no partial unlock state for a file, for instance. For these commands, the output shows the overall progress along with the number of total files that are being affected.
  • Smaller logfiles: The log file is now limited to 1 MB. No more ever-growing logs.

Bug fixes

  • Fixed a bug where file tracking would register a type change in git when working with direct mode repositories (e.g., on Windows).
  • Fixed a bug where the file status (from gin ls) was being incorrectly reported when working in direct mode (e.g., on Windows). Direct mode repositories should now show the exact same output as indirect mode ones.

Relevant PRs

  • #191: New command: gin version
  • #192: Versioning "copy to"
  • #197: Transfer rates
  • #199: gin commit: Working without remotes
  • #201: Fix file adding in direct mode
  • #202: Log trimming
  • #203: Progress bars for file operations
  • #204: Fix for ls file status in direct mode
  • #205: New command: add-remote
  • #206: Handle multiple server configurations

Version 0.16

05 Mar 18:37
Compare
Choose a tag to compare

Changes

  • Logging changes: More useful logging info and command delimitation.
  • Relevant help: When a command is given bad arguments, instead of printing the general help/usage info, it now prints the help/usage for that specific command.
  • Fix for stuttering/flashing of text during progress printing on Windows.
  • Completely redone command line argument handling and better help formatting.
  • New command: gin repoinfo
    • Prints the information for a single repository on the server

Relevant PRs

  • #172: Logging changes
  • #174: Use git annex add --update for locking
  • #176: Print gin-cli version to log on initialisation (of the log)
  • #177: Update help text
  • #181: Error message and output improvements
  • #182: Print output status only when text has changed
  • #184: Better command line argument parsing
  • #187: Fix for configuration paths with spaces
  • #188: New command: repoinfo

Version 0.15

20 Feb 14:40
Compare
Choose a tag to compare

Changes

  • No longer commits changes when performing an AnnexPull (git annex sync --no-push).

Relevant PRs

  • #171: No commit on gin download

Version 0.14

16 Feb 15:49
Compare
Choose a tag to compare

Changes

  • Host SSH key needs to be added to any non-default host configuration and is strictly checked.
  • Various improvements and bug fixes.

Relevant PRs

  • #161: Fixed bug where output message for file removals was 'Adding remove'.
  • #162: Strict host key checking for git and ssh commands.
  • #163: Allow running git and annex proxy commands without token.
  • #168: Ignore old (deprecated) config paths.
  • #169: Disable symlinks explicitly on Windows.

Version 0.13

12 Feb 11:36
Compare
Choose a tag to compare

New features

  • Create repository on the server without cloning: gin create --no-clone
    • Cannot be used in combination with --here.
  • Delete public SSH key from the server: gin keys --delete <index>

Relevant PRs:

  • #157: Delete key command
  • #160: gin create --no-clone

Version 0.12

23 Jan 16:36
Compare
Choose a tag to compare

New features and feature changes

  • Create repository out of current directory
    • gin create --here will create a new repository on the remote server and initialise the current working directory with the appropriate remotes and annex configuration.
  • JSON output: Most commands now support the --json flag for JSON formatted output.
  • The location for configuration files has changed on all platforms. Platform specific locations are now used. On first run, the client looks for files in the old configuration directories and transfers them to the new location if necessary.
  • If a command requires login and the user is not logged in, instead of simply printing an informative message, the user is prompted for login (unless --json is specified).
  • Local (in-repo) config file can only be used to specify annex selection. In other words, only the annex.minsize and annex.excludes is used. All other options are read from the global and default configurations.
  • The local (in-repo) configuration file is never checked into annex, regardless of annex minsize rules.
  • The local config file can only be used for annex.minsize and annex.excludes options. All other options are ignored.
  • Repository listing function fix:
    • gin repos now lists only the logged in user's repositories.
    • gin repos --all lists the logged in user's repositories and all other repositories in which they are a member.
    • gin repos --shared lists only the repositories in which the user is a member.
  • Repository listings now provide more information if available.

File operation and file transfer progress output

  • File operations such as lock, unlock, and remove-content now provide per-file output on whether the operation was successful or not. The output prints per line as the operation finishes for each file.
  • File transfers during upload, download, and get-content show transfer rates and percentage complete.
  • gin upload without an argument no longer warns about the lack of file specification. Previously the warning was meant to inform the user that changes (metadata) are uploaded but no new files. The behaviour of the command (what is updated in the index and what is uploaded) is now clear due to the output progress and success or failure messages printed by the command and the warning message would probably lead to confusion. Note also that the behaviour of the command has changed slightly. New content will be uploaded for files that are already being tracked.

Bug fixes

  • More flexible version checking for git-annex: Handles more types of version string formats.

Relevant PRs

  • #120: gin create --here
  • #123: File transfer progress output
  • #124: Fix for version check
  • #126: JSON output for gin ls
  • #127: Bug fix for file locking when performing download
  • #131: Bug fixes for Windows and file query routines
  • #135: Platform-specific config and log directories
  • #137: Bug fixes and login prompt
  • #141: Local config changes: Only annex filtering
  • #148: Error handling and messages
  • #149: New repository listing command
  • #150: Fixes to repos command and error messages
  • #153: Minor tweak of gin repos --json output

Version 0.12 beta

20 Dec 15:06
Compare
Choose a tag to compare
Version 0.12 beta Pre-release
Pre-release

This is a beta release

This release introduces some new features as well as a completely rewritten output interface. There are some issues to be expected with the new output. See the Known issues section below for details.

It is not recommended to use this version for work, but you may use it for testing the new features.

New features and changes

  • Create repository out of current directory
    • gin create --here will create a new repository on the remote server and initialise the current working directory with the appropriate remotes and annex configuration.
  • JSON output: Most commands now support the --json flag for JSON formatted output.
  • The location for configuration files has changed on all platforms. Platform specific locations are now used. On first run, the client looks for files in the old configuration directories and transfers them to the new location if necessary.
  • If a command requires login and the user is not logged in, instead of simply printing an informative message, the user is prompted for login (unless --json is specified).
  • Local (in-repo) config file can only be used to specify annex selection. In other words, only the annex.minsize and annex.excludes is used. All other options are read from the global and default configurations.
  • The local (in-repo) configuration file is never checked into annex, regardless of annex minsize rules.

File operation and file transfer progress output

  • File operations such as lock, unlock, and remove-content now provide per-file output on whether the operation was successful or not. The output prints per line as the operation finishes for each file.
  • File transfers during upload, download, and get-content show transfer rates and percentage complete.
  • gin upload without an argument no longer warns about the lack of file specification. Previously the warning was meant to inform the user that changes (metadata) are uploaded but no new files. The behaviour of the command (what is updated in the index and what is uploaded) is now clear due to the output progress and success or failure messages printed by the command and the warning message would probably lead to confusion. Note also that the behaviour of the command has changed slightly. New content will be uploaded for files that are already being tracked.

Bug fixes

  • More flexible version checking for git-annex: Handles more types of version string formats.

Relevant PRs

  • #120: gin create --here
  • #123: File transfer progress output
  • #124: Fix for version check
  • #126: JSON output for gin ls
  • #127: Bug fix for file locking when performing download
  • #131: Bug fixes for Windows and file query routines
  • #135: Platform-specific config and log directories
  • #137: Bug fixes and login prompt
  • #141: Local config changes: Only annex filtering

Known issues

  • Some error conditions are not reported properly. In these cases, a command may fail with "unknown error" or in worse cases, appear to succeed without providing information about failure.
    • It is known that the latter will occur when performing an upload while there are changes on the server that have not been downloaded. The command will add/lock all local files, will not upload any content, and exit successfully. The occurrence of this can be determined by the lack of upload progress.
  • Errors are printed in some cases where it is not necessary. For example, when trying to unlock a directory with files that have no content, it would be more appropriate to inform the user that the content is unavailable, rather than showing an actual ERROR.