Unity Version Control Explained
Unity Version Control (previously known as Plastic SCM)[1] is a cross-platform commercial distributed version control tool developed by Códice Software for Microsoft Windows, Mac OS X, Linux, and other operating systems. It includes a command-line tool, native GUIs, diff and merge tool and integration with a number of IDEs. It is a full version control stack not based on Git (although it can communicate with it).
Features
Unity Version Control is a full version control stack platform. It includes these components:
- Server
- Command line client
- GUIs
- Diff and merge tools[2]
- Web GUI[3]
- Web-based admin interface[4]
Some of its features include:
- Support for heavy branching and merging: According to its creators, Unity Version Control can handle unlimited branching and complex merge scenarios[5]
- Visual Branch Explorer: A timeline to represent branches, merges and changes in repositories, implemented in all of its GUIs[6]
- ACL-based security: Every object in the system can be secured with access control lists[7]
- Built-in three-way merge and side-by-side diff including language-aware support and history of a specific method or function[8]
- Directory versioning and support for versioning renames
- Revision history for branched, renamed, moved, copied and deleted files
- Blame/Annotate
- Centralized operation (SVN/Perforce style)
- Distributed operation (Git/Mercurial style)
- Atomic commits—the server assures that changesets are committed in the repository entirely
- Shelving—users can save and restore work in progress for task switching
- Support for ASCII, Unicode, binary, symbolic link (on Unix), Mac-specific, and UTF-16 files
- Support for Mac OS X, Windows and Linux platforms
- Server-side and client-side event triggers[9]
- High-latency network support: The network protocol used by Unity Version Control is optimized for high-speed/high-latency networks[10]
- Gluon: GUI and workflow for non-developers (specially focused on game development)[11]
- Locking: Binary files and assets that can't be merged can use locking instead of branching/merging[12]
Design
Unity Version Control is a client/server system although in current terms of version control it can also be defined as a distributed revision control system, due to its ability to have very lightweight servers on the developer computer and push and pull branches between servers (similar to what Git and Mercurial do). Developers work on files in their client workspaces, and check in changed files together in changesets.
Storage
Unity Version Control has 2 different families of storage for all its data and metadata:
- Jet: An ad-hoc storage designed for high-performance, released with version 6.0. It is now the default storage.
- Relational databases: Traditionally Unity Version Control supported storing all data and metadata in relational databases: MySQL, SQL Server, SQLite, SQL Server Compact Edition, Firebird, Firebird Embedded, Postgresql and Oracle. Relational databases are still supported although Jet is now the default option.[13]
Modes of operation
Unity Version Control can work in 2 modes:
- Centralized: With workspaces (working copies) connected directly to a server. Users perform checkin operations without the need for an additional push step.
- Distributed: Users host their own repositories on their computers and push/pull to a central server.[14]
Differences from Git
Unity Version Control SCM is not based on Git although it can act as a Git server and a Git client. Differences can be summarized as: improvements in merge, native support for large files and projects, optional file-locking, can work distributed and centralized. There are differences in the branching structure too: while in Git branches are just pointers, in Unity Version Control branches are containers. Unity Version Control versions directories and files identifying them with "item ids" which is good for move/rename tracking, while Git relies on diffs to rebuild the renames/moves and doesn't version directories.[15]
Interoperability with other version control systems
Git
Unity Version Control can interoperate with Git in the following ways:
- GitSync: Every Unity Version Control client can push and pull from a Git repository.[16]
- GitServer: A Unity Version Control server can act as a Git server, so any git client can push/pull to a Unity Version Control server.
- Fast-import/export support: Fast-export and fast-import commands are available to export Unity Version Control repositories to Git intermediate format and import from Git intermediate format.[17]
Perforce
Unity Version Control can do bi-directional sync with Perforce depots to ease migration[18]
Other version controls
Import/export from other systems is achieved through Git's fast-import/export format.
Availability, release cycle and supported platforms
Unity Version Control is available to download from the Unity Cloud Dashboard[19] or plasticscm.com[20] . Major releases are published yearly as pre-built executables for Microsoft Windows, Mac OS X, and Linux.[21]
Minor releases are available on a weekly basis.
Licensing and terms of use
Unity Version Control is free for individuals (Personal Edition), non-profit organizations and open-source projects (Community Edition).
Cloud Edition is a commercial version for teams that do not need an on-premise server. Customers pay per active monthly user and cloud storage. The subscription includes all the Unity Version Control software.
Enterprise Edition is a commercial version for teams over 15 users, typically used by corporations. It can be purchased in perpetual edition mode or with a monthly or annual subscription.[22]
History
Codice Software started in August 2005 backed by an angel investor and the founders.[23] The goal was to create a version control stronger than SVN in branching and merging and more affordable for SME than the commercial alternatives available at the time. In October 2006, they released the first version of Plastic SCM and was officially presented in Tech Ed 2006 in Barcelona.[24] [25]
In 2007, Codice was the first Spanish SME to achieve CMMI L2 using SCRUM.[26]
Plastic SCM was featured by Novell as one of the companies using Mono commercially.[27]
Plastic SCM 2.0 was launched in March 2008.[28]
In 2009, Codice secures its first round of VC backed by Bullnet Capital, a Spanish firm specializing in tech companies.[29]
Plastic SCM was a Jolt Award finalist in the Change and Configuration Management category, announced in December 2008.[30]
Plastic SCM 3.0 was launched in July 2010[31] and it featured Xdiff/Xmerge: their first approach to track moved code in diffs and merges.
In December 2010, Plastic SCM announces "method history", a feature that allows the user to calculate the history of a given method/function instead of the history of a full file.[32]
In 2011, Francisco Monteverde joined the company as CEO while Pablo Santos, founder, was appointed as CTO and President of the board.[33]
Plastic SCM 4.0 was launched on November 23, 2011[34] [35] and introduced a major change in the internal design: versioning and merge tracked was moved from a per-file approach to a per-changeset approach, which helped improving later Git-interop.[36]
Since 4.0, Plastic started to be more oriented toward game development, specially considering the weaknesses of Git in terms of big repositories and files.[37]
Version 4.1 was launched in April 2012.[38]
In 2013, Codice launches SemanticMerge, a tool that diffs and merges based on code structure and not text.[39] The technology was later integrated inside Plastic. Semantic builds on top of the previous work done on the Xdiff/Xmerge tool. Later that year Semantic added Java support to complement the initial .NET offering.[40] Pablo Santos introduced cross-file diff and merge detection in QCon 2013 in San Francisco.[41]
In 2013, Plastic SCM started natively supporting the Git network protocol, which virtually converts any Plastic installation into a Git client.[42]
Plastic SCM 5.0 is launched in September 2013.[43] It features built-in semantic diff, refactor detection[44] and method history.[45] Other features are path based security, client changelists and improved cloaked rules.
Version 5.4 later expands some of these features and add a few more: encrypted servers, JavaCLI (a Java client to support HP-UX and Solaris scripting), multi-core file upload and download, Plastic Gluon (developed in collaboration with Telltale [46]), a GUI for artists in game development, WAN optimized data transfer, submodules, transformable workspaces.Plastic 5.4 evolves as Plastic's primary version and in December 2014 a new native GUI for Linux is launched replacing the previous cross-platform one.[47] 5.4 includes a new native MacOS GUI too.
In January 2016, Plastic Cloud was launched as a cloud repo hosting system.[48]
In March 2016, Plastic Cloud Edition was launched, a new version designed for teams who do not need an on-premise server.[49]
Version 6.0 was finally released in January 2017.[50] It features a new data storage system called Jet, full backward compatibility up to 5.0 and floating licenses support. 6.0 continues evolving during 2017.
Plastic SCM 7.0 was launched in March 2018[51] including a new Branch Explorer design, new web-based administration interface, and improvements in MacOS and Linux GUIs.
The mergebots feature was launched in September 2018. Mergebots are a way to implement DevOps with server-side agents that detect when branches have to be merged after testing them on a CI system.[52] Plastic SCM 8.0 was released in January 2019.
On August 17 2020, it was revealed that Unity Technologies, the creators of the game engine Unity, had acquired Codice Software.[53] [54]
See also
Notes and References
- Web site: Unity Version Control . live . https://web.archive.org/web/20240716125212/https://unity.com/solutions/version-control . July 16, 2024 . August 2, 2024.
- https://www.plasticscm.com/features/xmerge XDIFF AND XMERGE
- http://blog.plasticscm.com/2018/09/webui-web-interface-for-plastic.html WebUI: redesigned web interface for Plastic
- http://blog.plasticscm.com/2017/10/webadmin-introducing-new-server-admin.html webadmin – introducing the new server admin tool
- https://www.plasticscm.com/mergemachine mergeMachine
- https://www.plasticscm.com/branch-explorer Branch Explorer
- https://www.plasticscm.com/features/security SECURITY
- https://www.plasticscm.com/features/semantic-version-control Semantic Version Control
- https://www.plasticscm.com/documentation/triggers/plastic-scm-version-control-triggers-guide TRIGGERS GUIDE
- https://www.plasticscm.com/games/performance/high-latency-network Optimized network channel for high latency
- https://www.plasticscm.com/gluon Gluon: Version Control for Artists
- https://www.plasticscm.com/documentation/administration/plastic-scm-version-control-administrator-guide#Chapter7:Configuringexclusivecheckout(Lock) PLASTIC SCM ADMINISTRATOR'S GUIDE: Chapter 7: Configuring exclusive checkout (Lock)
- http://blog.plasticscm.com/2018/06/story-of-jet-fast-repo-storage.html The story of Jet: Plastic's super-fast repo storage
- https://www.infoq.com/articles/PlasticSCM Plastic SCM – DVCS at Enterprise Level
- https://medium.com/@psluaces/plasticscm-vs-git-c17934fad7ed Plastic SCM vs Git — 2018 edition
- https://www.infoq.com/news/2013/03/gitsync-for-plastic-SCM GitSync for Plastic SCM with Native Git Protocols and Visual Studio 2012 Support
- https://www.plasticscm.com/features/plasticscm-for-git-users PLASTIC SCM HIGHLIGHTS FOR GIT USERS
- reference: https://www.plasticscm.com/perforce Plastic SCM for Perforce teams
- Web site: Get started with Unity Version Control via the Desktop Client . live . https://web.archive.org/web/20240415230609/https://docs.unity.com/ugs/en-us/manual/devops/manual/version-control-desktop-client . April 15, 2024 . 2024-08-02 . docs.unity.com.
- Web site: Plastic SCM - Download Plastic SCM . live . https://web.archive.org/web/20240710160228/https://www.plasticscm.com/download . July 10, 2024 . 2024-08-02 . www.plasticscm.com.
- http://tirania.org/blog/archive/2008/Dec-18.html Miguel de Icaza on Plastic SCM UI on Linux and Mac OS X
- http://www.drdobbs.com/tools/major-plasticscm-updates/228200866 Major PlasticSCM Updates
- https://www.linkedin.com/in/psantosl LinkedIn: Pablo Santos
- https://www.abc.es/informacion/simo2006/index/enportada03.asp SIMO 2006
- https://www.infoq.com/articles/PlasticSCM Plastic SCM – DVCS at Enterprise Level Plastic SCM – DVCS at Enterprise Level
- https://www.theregister.co.uk/2007/07/30/plastic_scm Codice Software shows off new SCM tool
- https://www.mono-project.com/docs/about-mono/showcase/companies-using-mono/ Companies using Mono
- https://www.infoworld.com/article/2643033/application-development/plastic-scm-2-0-set-for-parallel-development-projects.html Plastic SCM 2.0 set for parallel development projects
- https://www.europapress.es/castilla-y-leon/noticia-innova-entidad-capital-riesgo-bullnet-capital-entra-accionariado-vallisoletana-codice-software-20090204101532.html Innova.- La entidad de capital riesgo Bullnet Capital entra en el accionariado de la vallisoletana Códice Software
- https://community.embarcadero.com/blogs/entry/embarcadero-products-are-jolt-award-finalists-in-several-categories-39433 Embarcadero products are Jolt Award finalists in several categories
- https://sdtimes.com/codice/codice-includes-xmergexdiff-2-0-in-plastic-scm-release Codice includes XMerge/XDiff 2.0 in Plastic SCM release
- http://blog.plasticscm.com/2010/12/announcing-method-history.html Announcing the method history
- https://www.computerworld.es/tendencias/francisco-monteverde-se-convierte-en-el-nuevo-ceo-de-codice-software Francisco Monteverde se convierte en el nuevo CEO de Códice Software
- https://www.youtube.com/watch?v=gRQ17wEs1tg Plastic SCM 4.0 Launch: new features in Plastic SCM 4.0 by Pablo Santos
- https://web.archive.org/web/20210521111751/https://www.prweb.com/releases/2011/11/prweb8973115.htm Codice Software Launches Plastic SCM 4.0; Challenges Git and Perforce in DVCS
- http://codicesoftware-es.blogspot.com/2011/09/plastic-internals-de-30-40.html Plastic internals: de 3.0 a 4.0
- http://www.marketwired.com/press-release/codice-software-unveils-plastic-scm-40-game-development-successful-collaboration-with-1628618.htm Codice Software Unveils Plastic SCM 4.0 for Game Development, Successful Collaboration With Digital Legends Entertainment
- http://www.eweek.com/servers/plastic-scm-pays-attention-to-detail-in-source-code-management Plastic SCM Pays Attention to Detail in Source Code Management
- https://www.infoq.com/news/2013/04/Semantic-Merge A Merge Tool that Understands Functions
- https://www.infoq.com/news/2013/06/semantic-merge Codice Add Java Support to their Code-Aware Merging Tool
- https://www.youtube.com/watch?v=GJuHtNZaong InfoQ - QCon San Francisco 2013 - Refactoring in the DVCS Age - Enter Semantic Merge
- https://www.infoq.com/news/2013/03/gitsync-for-plastic-SCM GitSync for Plastic SCM with Native Git Protocols and Visual Studio 2012 Support
- http://blog.plasticscm.com/2013/09/two-new-plastic-scm-versions-are-out.html Two new Plastic SCM versions are out today
- https://www.plasticscm.com/features/semantic-version-control Semantic Version Control
- https://www.plasticscm.com/features Plastic SCM features
- https://www.gamasutra.com/view/news/286064/Sponsored_How_Telltale_Games_handles_version_control.php How Telltale Games handles version control
- http://blog.plasticscm.com/2014/12/native-linux-gui-gtkplastic.html Native Linux GUI – gtkplastic
- https://www.facebook.com/8260127524/posts/10153524166417525 Plastic Cloud is now out!
- https://www.facebook.com/8260127524/posts/10153659931612525/ Plastic SCM Cloud Edition
- https://www.plasticscm.com/download/releasenotes/6.0.16.804 Release 6.0.16.804
- https://www.plasticscm.com/download/releasenotes/7.0.16.2047 Release 7.0.16.2047
- http://blog.plasticscm.com/2018/09/add-mergebot-to-your-repo.html Add a mergebot to your repo!
- Web site: 2020-08-17. Unity acquires Codice Software to manage 3D workflows. 2020-08-17. VentureBeat. en-US.
- Barton. Seth. 2020-08-17. Unity acquires Plastic SCM developer Codice Software Development News. 2020-08-17. MCV/DEVELOP. en-GB.