Friendshipper is designed to be a one-stop-shop for all nontechnical users' source control needs. For Unreal projects, it essentially replaces workflows that UGS and P4V support.
- Commit history
- Syncing repo + engine/editor binaries
- Submitting files + optional commit message formatting
- Reverting files
- LFS lock management
- Generating code project files + opening editor
- Automatic and manual snapshots of worktree state
- Background fetching of latest
- Background repo maintenance (git gc, etc)
- Must be hosted on Github with merge queue enabled
- LFS server with locking support (see lfs-rs)
- Assumes all development happens on a single trunk branch
- Creating and switching between branches is not supported
- Only supports a single project at a time
You will need:
- Github repo
- Personal Access Token
If using the editor/engine binary download features, you will also need:
Upon first launch of Friendshipper, you will be prompted to fill in this information. You can always update it in the Preferences page later.
One of the main drawbacks of Git in a large team environment is the requirement to be on latest to submit changes. To overcome this limitation, Friendshipper submits changes through an alternate submission path that leverages Github's Merge Queue feature. This means that Friendshipper is tightly integrated with GitHub's feature set, but it achieves parity with traditional Perforce workflows in the sense that users can submit files at any given time, as long as it hasn't changed upstream and other users haven't locked it.
The way this works:
- The user initiates a submit
- A snapshot is saved in case anything goes wrong, the user won't lose any work
- A new branch is created with all the changes
- The changes are commited to the new branch
- A temporary worktree branch is created, with all the same changes
- Latest is fetched from upstream trunk and merged into the worktree branch
- The worktree branch is pushed up to the remote
- A new PR is opened to merge the change into the trunk branch
- The PR is added to the merge queue
- Once the PR passes all merge checks, it's merged into trunk
Because the Quick Submit process leaves the user on a leaf branch, Friendshipper uses the Sync operation to switch the user back to the trunk branch if they're not on it already.
It should be noted that this process is mainly intended to be used by nontechnical users, or for content-only submits. Engineers may want to have more control over their submission process and are empowered to do so.
Unreal requires tight integration with whatever source control provider you're using for your repo, so Friendshipper has a plugin to facilitate this. See the plugin page for installation documentation.