v7.4.0-uplift.syncback.rc.18
Pre-releaseThis release has been superseded by v7.4.0-uplift.syncback.rc.19
This release continues the work on developing syncback. Since syncback is primarily feature complete at this point, this release primarily contains bug fixes.
Please look at the list of changes even if you have previously used syncback. A previous release included some potentially breaking changes.
Note that this is a pre-release build. Despite being labeled as a release candidate, it will almost certainly have bugs and you should be careful about using it for serious work. Among other things, syncback can delete files from your disk so you should be careful using it.
If you are new to syncback, click here for a rundown!
Syncback is a feature designed to solve the long-standing problem of converting an existing place file into a Rojo project. It is configured by a new field in projects, and is invoked with a CLI subcommand rojo syncback
.
The command itself is rojo syncback path/to/project --input path/to/file.rbxl
. This will run syncback and pull things from the provided file to place on the operating system. Instances are attempted to be written in a reasonable manner but what Instances become what is still up in the air.
Instances will only be pulled from the file system if they are a descendant of a node in the provided project file. That is, in order to syncback the children of Workspace
, Workspace
must be in your project file. You may wish to have a separate project.json for running syncback as a result.
To control the behavior of syncback more, there's a new field in project files named syncbackRules
:
{
"syncbackRules": {
"ignoreTrees": [
"ServerStorage/ImportantSecrets",
],
"ignorePaths": [
"src/ServerStorage/Secrets/*"
],
"ignoreProperties": {
"BasePart": ["Color"]
},
"syncCurrentCamera": false,
"syncUnscriptable": true,
"ignoreReferents": false,
}
}
A brief explanation of each field:
ignoreTrees
is a list of paths in the roblox file that should be ignoredignorePaths
is a list of paths in the file system that should be ignoredignoreProperties
is a list of properties that won't be synced backsyncCurrentCamera
is a toggle for whether to sync back the Workspace's CurrentCamera. Defaults tofalse
.syncUnscriptable
is a toggle for whether to sync back properties that cannot be set by the Roblox Studio plugin. Defaults totrue
.ignoreReferents
is a toggle for whether to sync back referent properties likeModel.PrimaryPart
. Defaults tofalse
, which means that they will be included.
This feature will have bugs. Please report them to us as you encounter them!
Changes
- rc.18
- Remove old folder when a folder is converted to rbxm due to invalid filenames for children.
- Remove old file when rbxm fallback is otherwise triggered.
- Adopt Ustr for string interning (potential performance improvements due to fewer string allocations)
- Turn update checking off by default
- Make ChannelTabsConfiguration serialize as a JSON model
- rc.17
LuaSourceContainer.ScriptGuid
no longer serializes in most cases- Internal attributes (such as
RBX_OriginalTechnologyOnFileLoad
) are now ignored ignoreTrees
is now respected when Instances are removed- Duplicate
Rojo_Id
attributes will now trigger reserialization HumanoidDescription
Instances will no longer serialize differently between runs
- rc.16
- Compatibility update for
rc.14
- Compatibility update for
- rc.15
syncUnscriptable
now defaults totrue
instead offalse
.ignoreTrees
does not include the root of the project's name anymore- Syncback now functions when using model files (
rbxm
/rbxmx
) as input - Syncback now correctly serializes and syncs
csv
files NumberRange
properties will now only serialize if they are not the default- Removed files and directories now respect
ignorePaths
- Directories will no longer be serialized unless they've changed
- Heavily reduced the amount of logging
- Synchronized with the upstream Rojo's master branch, so all of the 7.4+ changes are now in this release
Prior changes
- rc.14
- Fix a crash caused by project nodes with a name other than their class name
- Properties that do not serialize (like
ScriptGuid
) will no longer reserialize. This issue only occurred with XML files.
- rc.13
- Update rbx-dom to include reflection database v629
- Write unknown properties when syncing back to xml
- Instances with multiple potential syncback paths will no londer sync back to all of them
- Improve error message when rbxmx fails to parse
- Fix OptionalCFrame equality when both are null
- rc.12
- Update rbx-dom to include reflection database v628
- Instances related to TextChatService will become model.json files by default now
- NaN values will no longer cause spurious diffs
- rc.11
- Updated rbx-dom to prevent Motor6Ds from duplicating under some circumstances
- rc.10
- Project files should now only reserialize when it's necessary
- In the same vein, missing attributes should now correctly retrigger a serialization
- Also, projects won't get properties when they don't need them as in the case of JSON models or a file with a meta.json
- The old file from Project files are now always respected
- Referent attributes should reserialize if a
Rojo_Id
is duplicated or if a Rojo target attribute points to a property that doesn't need to be set. - Properties like
StringValue.Value
andLocalScript.Source
now serialize in project files if the node has no$path
set
- rc.9
- Started using
UniqueId
for referent links instead of a random 128-bit integer - CSV files are now sorted by
Key
instead ofSource
and preserve theExample
field now - All Value objects (StringValue, IntValue, etc.) now syncback as a JSON model by default
ignore_paths
globs now ignoresrc
if your glob issrc/**
. This behavior can be reverted by settingcreate_ignore_dir_paths
tofalse
insyncbackRules
.- Made it so diffing takes place after referent links, fixing cases where referents wouldn't be linked in files that were otherwise identical
- Improved performance of writing to file system
- Started using
- rc.8
- Fixed a regression wherein Directories wouldn't fallback to syncing back as an Rbxm if the initial syncback attempt failed
- rc.7
- Rewrote the majority of the path resolution logic, resulting in much more accurate syncback of Project files
- CSV files should now syncback correctly
- Properties are filtered differently now, resulting in less data being stripped out of rbxm and rbxmx files as well as all JSON formats
- SharedString properties should no longer show up unexpectedly in directory metadata
- rc.6
- Ported the fix for model pivots from 7.4.1
- rc.5
- Updated the version tags for Rojo's CLI and Plugin to actually say "7.4.0-uplift.syncback.rc.5" instead of "7.4.0"
- rc.4
- Rewrote syncback for project files to accurately run syncback on nodes with
$path
- This rewrite should correct a problem with nested projects, among other things
syncCurrentCamera
now does what it says instead of the opposite- SharedString properties (such as the collision of MeshParts and Unions) are saved in rbxm and rbxmx models now
- If a project cannot be serialized as a directory, it will instead be serialized as an
rbxm
file rather than raising an error - Syncback will now emit
rbxmx
files rather thanrbxm
if the enviroment variableROJO_SYNCBACK_DEBUG
is set to1
- Similarly, it will emit model.json files if it is set to
2
.
- Rewrote syncback for project files to accurately run syncback on nodes with
- rc.3
- Fixes ref properties not saving correctly when a model is saved via syncback
- rc.2
- Fixes cross-file referent support
- Fixes attribute/tag deletion
- Fixes massive diffs
- Added prompt to confirm before writing files. Bypass with
-y
or--non-interactive
.