Skip to content

Releases: ProjectBorealis/PBSync

0.6.0

18 Sep 13:40
Compare
Choose a tag to compare

Core

  • Added a sample_config_minimal.xml to show only required config keys
  • Improved logging
  • Updated PyInstaller to 5.13.2
  • Updated to Python 3.11.3
  • Fixed example Build script not working with new repos

Sync

  • Added support for GitLab repos (GitLab.com, and non-GitHub.com repos are assumed to be GitLab at the moment, will fix soon). Caveats:
    • You must use token authentication, and add api and write_repository to your token
    • glab seems to have a bug with downloading release assets from private repositories, even when authenticated.
  • Added support for setting multiple artist/creative branches for automatic syncing
  • Fixed error with syncing branches with new status branch config introduced in 0.5.0
  • Added editor_args parameter to launch the editor with additional parameters
  • Files are no longer unlocked if working outside of a status branch, so that locks can be held until merge
  • Fixed files being marked read-only if they were untracked
  • Updated compatibility with the latest Git Credential Manager
  • Handle cases where .git/index.lock lingers from a canceled operation and blocks sync from happening when really it is safe to do so
  • Fixed errors not being detected from git pull
  • Handle more cases of erroring git pulls
  • Removed forced git-lfs pull, because it forces redownload of content which is immediately pruned by PBSync. Please make sure you have Git LFS set up properly in your .gitconfig or with git-lfs install.
  • Fixed autosync and clean configuration keys not actually working
  • Fixed binaries upload not working in new repos

Publish

  • Added support for Steamworks
  • Made publish support allow for multiple publishers so you can publish to multiple platforms in one command

Build

  • Fixed some recommended args not being set for game builds. In the future, we will scan the ini for build configuration.
  • Added UTF8 output to UAT

Engine

  • Added support for Longtail incremental asset delivery for engine stores. Rather than redownloading a whole archive for each new engine version, you can having a living, updating store which gets incremental updates for the engine.
  • If source_dir is configured, still clean up download_dir
  • DDC sync now ensures config variables are set before executing, thereby making it optional
  • Fixed engine association registration happening frequently in some cases
  • Fixed some engine download files not being cleaned up sometimes
  • Improved support for launcher engines
  • Engine update for source builds will no longer sync to remote submodules but rather the submodule commit targeted in the repo

0.5.0

07 Nov 01:26
Compare
Choose a tag to compare

Core

  • Added new Script/ examples to PBCore repo
  • Added attributes support for LFS locking without LFS asset storage
  • Added support for LFS text assets
  • Made UpdateProject.bat script much more resilient to failures on some file systems

Config

  • Made most config keys optional with common defaults, or just in time requirements for optional features

Datasync

  • Added preliminary BuiltData uasset build store to externally store BuiltData outside of source control

Binaries

  • Added new build binaries mode, which generates SLN and builds binaries every sync (for an always build workflow)

Sync

  • Enhance support for plugin content when maintaining LFS locks
  • Added git pull live log stream so that users can see the progress of long downloads without thinking it's stalled and cancelling
  • Added git lfs pull command to sync, to allow for verification of LFS pointer integrity across the entire repo
  • Fixed a bug where the repo was attempted to be accessed by PBSync before Git Credential Manager was setup, causing a bad user authentication flow
  • Made autosync the default, so the repo is updated on all status branches
  • Worked around an issue with LFS install paths being incorrect in some cases
  • Added support for the latest GCM installation paths
  • Fixed erroring out when project version was missing, even if having a project version is not required due to no binaries sync flow
  • Fixed an incorrect error message when encountering conflicts on fast forward merge pull mode
  • Fixed a stall with LFS lock maintenance when CPU has 64 threads or more
  • Fixed a bug where --debugbranch param would not sync if the branch was not part of the branch list

Launch

  • PBSync is now much more robust with some faulty Unreal Engine file association configuration. It will make its best effort through many different means to launch the project and inform the user on how to fix it.

Engine

  • Symbols are now removed if they are disabled after downloading them
  • Optimized engine remote sync with GCS by checking if there are any files to sync before listing directories on the local for synchronization
  • Fixed engine directory prompt appearing due to changes in engine source folder handling
  • Fixed SLN and prereqs not updating when switching between installed build and source build
  • Engine source folder now switches to the main branch if not on a working tree of the engine prefix base branch
  • Improved multi-platform support for various engine commands
  • Fixed engine sync command having faulty output when custom engine downloads were not enabled for the project

Build

Publish

  • Added new system for supporting multiple different publishers
  • Added support for Itch.io publishing through butler
  • Work around Discord authentication expiry
  • Made publish command value dynamic, so you can have as many branches as you configure through the publishing tool.

Editor

  • Enhanced how editor binaries are cleaned up before a --build package
  • Editor binaries are now always built with the installed build, even if an engine source directory is available. You can set your engine source directory to use otherwise using the ue4v-user.source_dir config

Installed build

  • Added --build installedbuild to build an installed build using an engine source folder and upload to GCS, auto-incrementing the changelist number. Also sets up a local cache for your UE download directory

DDC

  • Added support for the FillDDCForPIE plugin with --build fillddc. Launches the editor with EnumerateForS3DDC and runs the FillDDCForPIE automation command.

Release

  • Added errors for not having a project version set, or having no git-chglog or gh cli executable installed

Autoversion

  • Changed --autoversion parameters from hotfix, update and release to patch, minor and major, respectively, to use standard SemVer syntax
  • Fixed --autoversion not working on a fresh project config which did not already have project version set

0.4.0

10 Jun 14:23
Compare
Choose a tag to compare
  • Added support for Unreal Engine source installs
  • Git dependencies are automatically downloaded and installed
  • Now uses Git LFS 3 forced prune, which saves on duplicated file storage space
  • Added support for partial engine patches using GCS rsync
  • Added support for Cloud DDC and VT DDC sync on GCS
  • PBSYnc now supports multiple arguments, will run them in sequence. Allows for one liner automation.
  • Enhanced build arguments
  • Reworked GCM support for new project release
  • Binaries.zip no longer downloads if checksum matches
  • Checksum file is now hardcoded to .checksum for consistency across tools
  • Unlocks unmodfieid files on startup
  • Builds now use UBT to build instead of msbuild
  • UAC handled better, now shows reason before prompting and handles declines
  • Added uproject restore file functionality back
  • Updated to pyinstaller to v5.1
  • Smooth out some workflow with dispatch
  • Various bug fixes and improvements

Full Changelog: 0.3.0...0.4.0

0.3.0

27 Sep 19:51
f154ae9
Compare
Choose a tag to compare
  • Add sample usage documentation
  • Add support for configurable branch names
  • Add build system, for local automation and CI
  • Support downgrading to non-engine bundles
  • Add Scalar maintenance
  • Fix LFS read-only being applied to new assets
  • Add task to remove Git auto updater
  • Switch to BLAKE2 hashing
  • Symmetrical binary packaging
  • Revert back to simple pull style, to avoid bugs and improve performance in some cases
  • Do fast forward if there are no local commits
  • Fix update git for Windows not working
  • Update to PyInstaller 4.5.1
  • Add more options to support general use
  • Add support for UE5
  • Fix user config not savable when hidden
  • Add support for project plugins
  • Add logging explaining UAC access
  • Clean out old engine installs in all cases
  • User configured binaries management
  • User configurable launch app
  • Fix Unreal config parsing and serialization
  • Background fetch while main syncing
  • Fix upgrade to VFS from normal Git for Windows
  • Add support for built-in launcher engine installs
  • Misc performance optimizations and bug fixes

0.2.22

22 May 17:32
Compare
Choose a tag to compare
  • Updated PyInstaller to v4.2 & v4.3:
    • Notably, this release reduces false-positive detection from anti-virus software by setting EXE checksums, and comes with various performance improvements
  • Improved Git Credential Manager Core update detection to detect and help resolve a variety of installation setups which prevent it from working properly
  • Only check if UE4 is running when needed
  • Improved UE4 check to only check for project's engine instead of any running UE4 instance
  • Removed support for cleaning up watchman
  • Various clean up to infrastructure including scripts, docs, requirements, and imports
  • Added project.autosync user config setting, which allows to force on pulling even when not on artist branch
  • Fixed .md5 file not being synced properly for partial updates
  • Fixed engine free space check not showing the correct required space and fixed various formatting errors for sizes
  • Fixed engine free space check happening even when engine would not be downloaded
  • Increased engine free space requirements
  • Fixed a crash when the UE4 editor config does not exist
  • Moved to autostashing on pull, to prevent various state issues
  • Fixed repo being synced when it was up to date
  • Added config for ue4v bundles
  • Fixed a case where the credential username could be invalid or not retrieved successfully
  • Enforced self locked files to be writeable, and non-self locked files to be read only
  • Added support for stdin on Linux
  • Removed drm-wrap from dispatch tools, as we integrate DRM into the game code
  • Added usage for Git 2.31 background maintenance
  • Added usage for Microsoft Git update-microsoft-git to update Git
  • Added support for the latest GCM version (out of beta!)

0.2.21

26 Dec 20:25
Compare
Choose a tag to compare

Just in time for Christmas comes a culmination of many months of improvements!

  • Updated to Python 3.9
  • Updated to PyInstaller 4.1
  • User config now automatically creates new sections
  • CI user config now configs the environment variable names to find values under, thereby unifying configuration for user and CI for various systems, and improving portability
  • Upgraded from hub to GH CLI for release downloads/uploads
  • Added integration for Git Credential Manager Core, with update checking and credential helper integration to automatically fill in credentials for release downloads
  • Updated many log messages
  • Improved version output
  • Fixed MD5 checksum failure error not printing correctly
  • Error states now output the status automatically, to reduce a step in support tickets when sharing the log
  • Upgraded to use git maintenance for gc, loose objects and repacking
  • Fixed commit graph being updated when it could not be
  • Added LFS prune as a default command again due to fixes in 2.13
  • Added system for unshallowing repo and undo single branch setups, for new super charged clone setup
  • Optimized pulls with LFS by pulling in one batch rather than creating new LFS processes (slow on Windows)
  • Added support for user selected versions
  • Improved engine directory selection in many cases
  • GSURI now automatically uses the one configured in .ue4versionator
  • Improved gsutil cp parameters
  • CI now manages a user config file of its own for better storage for ue4versionator
  • New engine downloads will automatically install prerequisites, register unreal version selector, and for developers, generate project files
  • Added automatic management of source control and text diff path settings for UE4
  • Added handling of trivial rebases, in the various cases they get stuck randomly
  • Optimized core sync process
  • Improved project portability
  • CI automatically cleans old versions
  • Added partial sync mode
  • Added migrate command

0.2.20

30 Oct 21:59
Compare
Choose a tag to compare
  • Updated build instructions
  • Handles all .ue4v-user settings
  • Allows for path customization through [paths]
  • Fixed various issues with Git background tasks
  • Fixed various issues with y/n input handling
  • Made multi-pack-index support optional
  • Added expire date functionality to multi-pack-index usage
  • Fixed unnecessary error in commit graph lock clean step
  • Fixed a git-lfs-prune data loss issue
  • Fixed an issue with engine downloads on initial setup
  • Updated partial sync to do some repo and project tasks while still skipping fetch

0.2.19

04 Aug 19:14
Compare
Choose a tag to compare
  • Now GCs in the background to avoid GC overhead with git commands
  • Enabled support for multi-pack-index
  • Still dedup when prune not available

0.2.18

04 Aug 16:36
Compare
Choose a tag to compare
  • build.bat now updates all dependencies
  • StartProject.bat renamed to UpdateProject.bat
  • Loose files moved to .github
  • Now uses 2.28 commit graph feature for bloom filters
  • Optimized repo sync skip
  • Optimized sync behavior to skip an extra fetch
  • Repo is now pruned, deduped and commit graphed even when not on a branch that syncs
  • Added super charged downloads of UE4 using gsutil
  • Fixed many code paths not supporting CI vs. user environments
  • Added initial support for partial updates

0.2.17

16 Jul 23:53
Compare
Choose a tag to compare
  • Add functionality for downloading engine through gslib
  • Make --repository optional