Git Product home page Git Product logo

pbsync's Introduction

PBSync

Advanced workspace synchronization tool for Unreal Engine projects hosted on git repositories.

Development

Dependencies

Run dependencies.bat on Windows or dependencies.sh on Linux.

Setup

On Linux, this step can be skipped.

PyInstaller is required for executable generation, and it should be built from source to prevent false positive virus detections of generated PBSync executable.

You can run install_pyinstaller.bat to do this automatically.

Build

Windows

To generate a binary file from python source code, just run build.bat script. If generation was successful, the binary file will be put inside dist folder. To start using, generated executable should be put into root folder of the Unreal Engine project.

Linux

On Linux systems, run the build.sh script to generate binary file.

But, since most Linux systems come with a version of Python already available, another option is to run it directly:

git clone https://github.com/ProjectBorealis/PBSync

PYTHONPATH=<path-to-local-PBSync> python <path-to-local-PBSync>/pbsync/pbsync.py --help

Contribution

Everyone is welcomed to fork the repository, or open pull requests and new issues in this main repository.

Usage

Sample usage

You can refer to our PBCore repo for an example of usage.

Essentially, we use a batch script to sync PBSync with the remote branch, and then launch PBSync (UpdateProject.bat). We have our configuration file in PBSync.xml.

PBSync.exe and ueversionator.exe are distributed as part of the repo, at the root game project level.

.ueversionator in the repo configures the engine download.

Additional scripts for managing various PBSync functionality can be found in the Script folder.

Available Commands

List of available commands can be printed to console by passing --help to generated executable.

pbsync's People

Contributors

awilderin avatar commodo avatar dyanikoglu avatar mastercoms avatar twentypast4 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

pbsync's Issues

Auto install of Git releases through GH CLI

We can automate installation of Git and friends (and even include a "latest" option) by setting up a repository and pattern to download releases from, and then automatically running those in succession. This will improve workflow by removing the need to download separately and open from the browser, and it will give an opportunity for us to not exit on fail and rather repeat the version check/install process.

Partial rebase woes

Sometimes, our rebase will fail and users will get stuck in a state where their index is at origin, but HEAD is at the previous local. This results in tons of changes and untracked files from the origin's changes.

Allow for customization of git paths

UE4GitPlugin allows for selecting a custom git.exe, and we should too, especially since versions are enforced. Should be a matter of adding a PBSync user config, and adding a new getter for git executable name. Should also investigate Git LFS, but it is less important since that should be standard.

error: unable to write new index file

Aborting the repo update because of an unknown error. Request help in #tech-support to resolve it, and please do not run UpdateProject until the issue is resolved.

On branch promoted
Your branch and 'origin/promoted' refer to different commits.
(use "git status --ahead-behind" for details)

Changes not staged for commit:
(use "git add/rm ..." to update what will be committed)
(use "git restore ..." to discard changes in working directory)

Need to restore state back

Lock management

PBSync can automatically set read-only for unlocked files, unlock unchanged assets, and lock changed ones, as Git LFS in conjunction with UE4 Ed can get stuck in invalid states sometimes.

Time mismatch hint

When longtail fails with "Invalid JWT" we should recommend syncing time

Add support for UE4Editor merge resolution workflow

Git repo now configured properly for UE4Editor to detect a conflict and prompt for a resolution. However, we block launches from happening when a merge conflict is encountered. Thus, we should investigate the UE4Editor workflow for this, and confirm everything is working smoothly. It may require creating a custom mergetool for git (to replace the default p4merge.exe in UE4Editor, which isn't found in path).

Support force pushed remotes

Currently, we don't do a great job of syncing up a repo if it is force pushed. We should add a check for this, and safely reset the repository instead of rebasing.

Automatically configure UE4 SourceControlSettings.ini

Config is under Saved/Config/Windows/SourceControlSettings.ini. We can easily fill this out with the information we have.

[SourceControl.SourceControlSettings]
Provider=Git LFS 2

[GitSourceControl.GitSourceControlSettings]
BinaryPath=C:\Program Files\Git\bin\git.exe
UsingGitLfsLocking=True
LfsUserName=mastercoms

Auto remove deprecated GCM

Git credential manager for windows is deprecated in favor of GCM Core. We can automatically remove the former.

UE4 commandlet integration

UE4 commandlets, although very useful, can be hard to access. Providing an interface in PBSync to list them would improve productivity and UE4 project health.

Auto build on source changes

Programmers may forget to regenerate project files when there is new source file content, and may not be on the latest binaries. We can fix this through UVS.

Upgrade from Hub to GH CLI

GH CLI now supports what we use Hub for: auth and release downloads. We should upgrade to GH CLI as Hub is deprecated by GitHub and is only community supported.

Support for UE4 hotreload

We can possibly use the UE Python API to trigger content reloads for new assets, instead of requiring the editor to close.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.