Search Unity

Unity's version control component has been upgraded to Plastic SCM.

Unity Collaborate vs Git?

Discussion in 'Unity Collaborate' started by DroidifyDevs, Dec 17, 2016.

  1. DroidifyDevs

    DroidifyDevs

    Joined:
    Jun 24, 2015
    Posts:
    1,724
    Hello,

    I just started using Unity Collaborate in 5.5. Some parts of it seem quite similar to Git (for example, pushing changes or the history window). I haven't had much time to spend with it, and also I've never gotten Git to work (that's a fail). Its uses seem to be the same as Git: provide backups and have multiple people work on it at the same time. So this (and my lack of knowledge on source control) leads me to the question: What's the difference between Unity Collaborate and Git? Is one better than the other?

    Sorry if I came off as a noob. I've always worked as a single dev as a hobby, so I've never really had a need for source control. However, this similarity intrigues me.

    Thanks for your input!
     
    Lagger625 likes this.
  2. Gurg

    Gurg

    Unity Technologies

    Joined:
    Nov 9, 2016
    Posts:
    73
    I understand where you are coming from, as someone who was introduced to Unity Collaborate less than two months ago and a regular user of Git.

    From my perspective, the idea is to provide a similar core service to something like Git but without the learning curve involved. While Git is great, it has a learning curve to it and a developer oriented focus that is sometimes hard to justify making a graphic artist learn when they deal with binary files all day instead of text/code. Some people just want to work on their stuff, sync it with their team, and be done with it without knowing the difference between a merge and a rebase. This is what we are trying to provide with Unity Collaborate.
     
    Underlie, DBarlok, Ramba01 and 7 others like this.
  3. DroidifyDevs

    DroidifyDevs

    Joined:
    Jun 24, 2015
    Posts:
    1,724
    I totally agree. I couldn't even revert anything in Git because of "Unable to revert commit" error messages. Unity Collaborate has been really easy, all I have to do is publish and click on the version I want in the history to revert. It's super easy and I love it :)

    I hope Unity will keep it free (perhaps with some limitations for non plus/pro users), as it is a great tool on par with Unity Analytics and Unity Ads.
     
    DBarlok, quixotic and Gurg like this.
  4. rsodre

    rsodre

    Joined:
    May 9, 2012
    Posts:
    229
    Hey @Gurg, I understand you want to make something very practical and easy to use, but I think most git users like myself are finding Collab a very poor versioning system.

    It is indeed very practical, but I miss a lot of things I can get on git. Specially Github.
    A PRO web interface giving the same functionalities as Github would be really helpful.
    That's what most of us use, and that's what we expect when migrating to a new versioning system.

    I don't know what you use internally, but if Collab was just an interface to Github, would be perfect! We would be able to commit easily, with all the power available behind it all.

    I miss listing commits, see all the changes on the same place.
    Listing current changes on my project. (not opening file by file on an external tool)
    What about branches?
    Pull requests?
    Network graph?
    Tags?
    Releases?
    Issue tickets?
    Task assignment?
    Commented issues, building a project history?
    Integration with project management tools?
    I really hope Collab grows to give us all that...

    Team software development is a complex process, we already use tools that help a lot.
    If you ignore this, people will not leave Github, and Collab will be used only by really small teams, or solo projects just for backup.
    And these people will never know the wonders a full versioning system can do, stuck with the basics.
     
    Last edited: Dec 27, 2016
  5. Gurg

    Gurg

    Unity Technologies

    Joined:
    Nov 9, 2016
    Posts:
    73
    @rsodre I am going to try to be careful with my language here as I don't want to either promise something that won't come or say something won't come only to have it delivered later.

    The problem here is we don't want to be Github or the same as Github. There is a different target audience in mind. Collab actually already uses Git under the hood. If we really wanted to enable everything Git has, we could effectively just remove the wrapping and give you plain Git, but at that point, why aren't you just using Git with Github and a Git plugin on your own? (Edit: This is actually wrong and I've posted a correction post below.) We want to add unique value with what we are providing. I don't want to say we won't eventually include support for pull requests and branching. I would personally love that, but then again, I also originally come from a Git heavy background before Collab.

    The question that really needs to be answered is how do we implement these features in such a way that we can do it with next to no learning curve for both developer and non-developer roles? While Git can handle binary files, it really shines when it comes to text based assets, so what do you do if you want to support pull requests for 3D model assets represented only by binary files? How do we implement branches without exposing the nightmares of merge or rebase strategies, conflicts, and three way diffs to someone that doesn't write code and has never used something like Git? These are very hard problems that would need to be solved to onboard these features with the target audience we have in mind. I do want to see these features come to light, but I also want to see these features presented in a usable and digestible manner with our target audience.

    ~Gurg

    PS: Quick aside, of the features you listed, a lot of the website based ones are totally doable and can see us implementing in the near future. However, the biggest blocker based on the goals I talk about here is branching. It's very simple in theory, and if everything goes smoothly and no conflicts ever happen, branches are easy. However, as someone that sounds very competent in Git as well, we both know that doesn't stay that way for long. So figuring out how to either always avoid those more difficult use cases or make handling them really easy for anyone, not just developers who know how to with Git, would need to be nailed down before we could release a branching feature.
     
    Last edited: Jan 4, 2017
    u3527735 and mahdi_jeddi like this.
  6. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,794
    For what it's worth, I'm an artist (although I can code, but I'm not great at it), have never used git and I don't find "branching" a difficult concept to grasp. And I understand that "proper" branching is difficult to implement, because merging the branches is going to be a lot more complicated when art assets are involved, but right now we can't even keep a "release" branch around, while we keep adding stuff on the main game, so that we can do hotfixes in case it's needed.

    The workaround we use now, is to keep a copy of the "release branch" on Dropbox. I think our needs are pretty basic, so I think needing to use another "versioning" system entirely just to fill those needs is a failure for Collaborate.

    I understand that you want to pin down the basics first (I mean, until recently, there was no way to even "roll back" properly) and that we're still in the early days of collaborate as a service, but please don't think that neutering or dumbing down the feature-set is good for the service. (I understand that's not quite what you said, I'm exaggerating to make a point :) )
     
  7. DroidifyDevs

    DroidifyDevs

    Joined:
    Jun 24, 2015
    Posts:
    1,724
    I think what @Gurg was trying to say was that Unity Collaborate is not full GitHub, but rather a very easy-to-use Git. If you want to use all of Git's features, you can go to GitHub. However, if you're someone with limited time like me, the ability to add builds and revert them quickly without having to spend hours on a learning curve is a nice feature. However, I see a problem here:

    Let's say you have 3 people, the artist, programmer and designer. The Artist pushes his build which adds some models. The programmer updates some scripts, and the designer modifies those scripts. However (from what I see, please correct if I'm wrong!) there is no branching system. This means if the designer starts modifying scripts and the programmer updates them after, the designer has wasted time on an old version of the programmer's scripts. Then, the artist needs to download someone else's build save (which to choose, the programmer's or designer's?), and add his new models again. Since Collaborate only presents a timeline with people posting their versions of builds, it's not really "Collaborate", it's "Someone's Build History Backup". For teams with a multiple people, this is awful as all you're doing is downloading someone else's backup. If that's all that Collaborate offers, it's not much different than using regular cloud storage (OneDrive, DropBox) and just sharing links with each other.

    For myself, Collaborate is perfect, as all I need is the ability to go back to older versions of my project when I screw something up. However, for teams with multiple people, Collaborate seems almost useless as it really allows for only 1 person working on a project at a time, without getting too far ahead of anyone else. It seems that the Git users want branching, and for small/large teams, it seems essential as with Collaborate all developers can do is revert to someone else's build backup.

    I might not have understood something correctly, or not seen a Collaborate feature, so if I'm wrong on something here, let me know.
     
    Gurg likes this.
  8. Gurg

    Gurg

    Unity Technologies

    Joined:
    Nov 9, 2016
    Posts:
    73
    @AcidArrow Yeah, like I said, I want it as a feature. If not for feature branches, to at least also enable use cases like if someone on a team works from multiple computers and they want to sync their own work on a project between their workstations without committing the WIP changes to the main project, potentially breaking it for the rest of the team until they finish the change.

    Also this is more of my own personal argument that with the target audience Collab has in mind, that proper branching and merging workflow in Git is where the real learning curve starts to kick in. I don't want to dumb it down, but I wonder what could we do to make it less painful? Should we just assume all branches should be merged by rebasing and make changing this or deciding this optional rather than mandatory? How do you easily explain that when comparing Git branches, that even if you have recently done another merge from master to your feature branch since the original split, that all comparison operations are still based off the original split rather than the latest merge? Git has some weird quirks where sometimes the best thing to do to is to literally delete and re-push the remote branch. Here's an example of a difficult use case that would either need to be dealt with to make easier or avoided.

    https://git-scm.com/docs/git-rebase#_recovering_from_upstream_rebase

    I am sure dealing with these problems can be done. I am just saying these are things Git just leaves for ends users to deal with once they end up in that situation, have a generally terrible time, and while that one developer learns "Alright, I am never doing that again", how long before someone else makes the same mistake? I just feel like these are pains we shouldn't be making our typical collaborator just "deal with it".
     
    mahdi_jeddi likes this.
  9. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,794
    @Gurg I get it. I just wanted to underline, that *some* form of branching should make it into collaborate, since I consider it essential.

    I get that if Collaborate stops being easy to use, it stops having a purpose (since I might as well use git), but at the same time, if it's missing too many features, it also stops having a purpose. So there's a fine line somewhere and getting there is going to be tough.

    I don't pretend to have solutions, (I mean if I did, I would probably be working with you guys :p ), so I'm just being a typical Unity user and demanding more features (and they should be easy to use, and I want them by tomorrow! thanks! ) :p
     
    DroidifyDevs likes this.
  10. rsodre

    rsodre

    Joined:
    May 9, 2012
    Posts:
    229
    @Gurg, I'd love to see that vision come to life! Indeed, some team members don't need to know a lot about versioning, they just do their work and commit. But developers expect a lot more.

    Now, if branching isn't still planned feature, that's bad. I can't imagine 2 developers working together without branches. Most of the times, one task takes several commits, just to be organized. Without branches, you'll be forcing the monster commits, and things will get really messy quickly. It will fail without branches. If the problem is how to make a branching interface, hire some top UX guy. It can be done, but without branching it will fail.

    Usually at least one guy in the team need to know versioning, responsible for merging, solving conflicts and telling bad news. Your target audience can't be "nobody needs to understand git". That team will not sustain, it will fail and never know why.

    Like in Dungeons & Dragons, the Game Master has his own manual that nobody else needs to read, while other players just need some briefing. Your target audience need a game master, with his own manual. And I think you can come up with some very simple manual. And a nice console, please.

    As it is, it's only useful to backup solo projects. Its a handy Time Machine.

    But hey, at least it has git underneath! So there's a chance it's full power will be available soon!
     
    mashianov likes this.
  11. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    As someone who's run git, svn, perforce and asset server (before collaborate), I have to say collab is here to stay for us. We love it. Do you realise how many hours I've burned tending to perforce? far too many. Hours that can be spent working on the game.
     
  12. Gurg

    Gurg

    Unity Technologies

    Joined:
    Nov 9, 2016
    Posts:
    73
    Hey everyone, some updates and corrections to past statements I need to make after having further discussions with the internal teams. First and foremost, *readies the loud speaker*...

    Feature branches are included on the 2017 roadmap!

    It's coming, so rejoice. It's obviously too early to say any specifics as to how it will be when revealed, but we're getting branches this year, and I don't mean the holiday mistletoe branches. :D
    Edit: With regret I have to edit this as this year's release cycle is going a slower than usual so branching slipped to 2018. :( My sincerest apologies to anyone that was mislead by this post.

    Now for my correction.

    Apparently, especially client-side, this statement is VERY WRONG. I just had a nice discussion with a teammate who better explained our setup and clarified some of my misunderstandings that made me think this was the case. My apologies for that, and I hope no one makes too many assumptions based off that statement before reading this.

    I'll now go shove some soap in my mouth and review my post history to see if I said any other silly things I need to correct.
     
    Last edited: Jun 22, 2017
  13. Tknoguyfication

    Tknoguyfication

    Joined:
    Nov 11, 2013
    Posts:
    3
    But with Github you get green squares D:
     
    Nsingh13 and Gurg like this.
  14. Gurg

    Gurg

    Unity Technologies

    Joined:
    Nov 9, 2016
    Posts:
    73
    Haha, very true. Maybe once we're out of beta and get further with our core features we can put in more fun stuff like that. It would only make sense for us, while helping game devs, to gamify the system a little bit. :D
     
    Nsingh13 likes this.
  15. alano999

    alano999

    Joined:
    Feb 25, 2017
    Posts:
    4
    Hey, sorry to reply on this somewhat old thread, but it looked like a good place to ask.

    Is there a way to get email notifications from Unity/Collaborate when a collaborater commits something new to the project? I've looked a little bit and can't find anything so far, but I'm fairly new to Unity and very new to Collaborate. Even if it is something I have to rig up a little bit (script, etc) I would love notifications when my friends commits something new.
     
    Alexander_Nasonov likes this.
  16. pKallv

    pKallv

    Joined:
    Mar 2, 2014
    Posts:
    1,191
    Will thuis cost money in the future? ...want to know to decide if continue or go back to Bitbucket.
     
  17. Ryan-Unity

    Ryan-Unity

    Joined:
    Mar 23, 2016
    Posts:
    1,993
    Hi @alano999! We do not currently have any webhooks for commit triggered email notifications but we are looking to add them in the future.
     
    Alexander_Nasonov likes this.
  18. Ryan-Unity

    Ryan-Unity

    Joined:
    Mar 23, 2016
    Posts:
    1,993
    Hi @pKallv! We are still finalizing pricing for when Collaborate gets out of beta. For now, we can say that there are 15 GB of cloud storage that you can use for free while in beta. We'll be sure to update everyone when we are closer to deciding the final pricing.
     
  19. Paulprog16

    Paulprog16

    Joined:
    Apr 20, 2016
    Posts:
    54
    @ryanc-unity Can we take that as a confirmation that it won't be a free service after the beta phase?
     
  20. Ryan-Unity

    Ryan-Unity

    Joined:
    Mar 23, 2016
    Posts:
    1,993
    @Paulprog16, no. :) There should be more details over the next few weeks. Sorry that I can't be more specific yet.
     
  21. Paulprog16

    Paulprog16

    Joined:
    Apr 20, 2016
    Posts:
    54
    No worries, I totally understand. Thank you!
     
    Ryan-Unity likes this.
  22. Lance_JZ

    Lance_JZ

    Joined:
    Jun 10, 2015
    Posts:
    11
    I don't understand why it would not be free, it does not offer much for teams of more than say five, even with branching. As there are many free versioning services such as GitHub.
    Though with the fear of pricing, I would be using it at all for any actual projects with my team of two.
    Now if there were free/pro versions of it, that would be all good.
    There is also this: https://github.com/blog/2329-introducing-github-for-unity
     
    bxstudio and rsodre like this.
  23. richard-lee

    richard-lee

    Unity Technologies

    Joined:
    Jul 14, 2015
    Posts:
    50
    We'll have specifics at Unite Europe (next week). If you're dying to know sooner, PM me and we can schedule some time to talk.

    For now, some general notes on our pricing philosophy. We really believe in the "Democratizing game development" mission. We want to make it as cheap as possible for everyone but free is really challenging for us. Comparisons to existing solutions are unavoidable, but the expected behavior of users is significantly different from a Collaborate user. Mainly, Collaborate (game) projects are many times larger. Bandwidth gets pricey; exponentially so, as users get added.

    To balance both ends (democratizing and staying in business), expect a free and paid version of the feature. Based on Beta activity, the free version will actually serve the needs of the majority of users, but don't expect it to be generous; especially in comparison to existing services.
     
    Last edited: Jun 22, 2017
  24. Pyxis-Belgique

    Pyxis-Belgique

    Joined:
    Jul 1, 2016
    Posts:
    14
    Since we're not only making games, we already own a Team Foundation Server with unlimited repository space.

    Currently, I guess Collaborate does not allow the use of TFS or any others well established repo services.

    However this configuration is working great with Unity Cloud Build.

    Do you plan to allow third party cloud services with Collaborate ?
     
  25. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Pricing is available on the https://unity3d.com/teams page.

    Basically, cheap as chips. Should be lifetime free for moderators but you know I'm a cheeky hippo :/ :D
     
  26. ttermeer-reboundcg

    ttermeer-reboundcg

    Joined:
    Jul 12, 2017
    Posts:
    62
    Same question here. I don't see any future for developer without Git-like system.

    If there is no such plan, how well that collaborate co-exist with a git system ?
    It feels like Collaborate is ideal for Level Designer and Artist but for a developer it would be a pain to work on two system if his code requires changes in scenes or prefabs.
     
  27. richard-lee

    richard-lee

    Unity Technologies

    Joined:
    Jul 14, 2015
    Posts:
    50
    Third party integration is on the list don't expect it to arrive any time soon; prioritizing the natively integrated solution before supporting others.

    There's no formal support for using Collaborate at the same time as Git. That said, I do it all the time for testing purposes. Never had an issue. I've talked to other teams that have done the same. From what teams have told me, what typically happens are small commits / rapid velocity with Collaborate, with occasional "milestone" check ins into Git or whatever SCM of choice.
     
    Last edited: Jul 12, 2017
  28. DroidifyDevs

    DroidifyDevs

    Joined:
    Jun 24, 2015
    Posts:
    1,724
    Welp there's no free version. Guess I've got to learn Git; it's past due anyways for me.
     
  29. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Thought it was free until October for teams. In any case I'm a major fan of Unity's Collab (now teams). It's so smooth that the staff who made it must slide to work on butter each day.

    I guess you can tell I've got closeted version control issues.
     
  30. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,794
    There is. It's 1gb for personal users.
     
    DroidifyDevs likes this.
  31. DroidifyDevs

    DroidifyDevs

    Joined:
    Jun 24, 2015
    Posts:
    1,724
    Stupid me, didn't read this:
    upload_2017-7-13_9-45-29.png
    Still have to learn Git though if I want to become serious in game development.
     
  32. unity_imLD6zPTAW9m5Q

    unity_imLD6zPTAW9m5Q

    Joined:
    Nov 28, 2017
    Posts:
    1
    It seems like colaborate allow to work only with single version of the application.
    If I need to have at the same time work with diferent versions of application (dev, stage, live) then colaborate doesn't allow this.
     
  33. TheCircadian

    TheCircadian

    Joined:
    Jul 30, 2016
    Posts:
    16
    I love using Collaborate for my own personal use, but I've been to a number of hackathons where Git is required for the judges to review your team's work. Every time there's a huge learning curve that the entire team has to go through in order to have a functional project. Some people don't have Git. The files in Unity are way to large to upload into Git. We spent 4 hours with the mentors trying to get Git to work with Unity. The judges want to see that you made commits to your git repo throughout, and teams that can't demonstrate that get disqualified. Judges won't accept Unity's Collaborate to review code updates, they want everything on GitHub.

    I know this is a minor use case, but I think it represents an issue that's larger than just hackathons. We need more accessibility. Unity has a great ecosystem, let's make it better!
     
  34. Gurg

    Gurg

    Unity Technologies

    Joined:
    Nov 9, 2016
    Posts:
    73
    Sorry I didn't see this post until now. We actually launched a new feature on the developer dashboard awhile back so that you can export and download your project as a GIT repo with full commit history. That should probably fix your judging issues.
     
  35. Elussian

    Elussian

    Joined:
    Jul 4, 2017
    Posts:
    3
    guy's if you want good results, forget about collaborate, I have try using it since a year and the result is showing that this is not good.
    50% of the time the updates are not really complete and I did test with two computer localy and it show that some files are lost while the update... It make you redoo and redoo your work allready done many many times.

    If you are trying to do something and you don't have time for rework what you allready did when your coworkers push something just forget about collab.

    That's a pity because it was looking like a simple and easy to handle system, but it's not serious it has make us lost day's of works. ( if you forget at the fact that sometimes it take one hour to check the updates )
     
    RaL likes this.
  36. WILEz1975

    WILEz1975

    Joined:
    Mar 23, 2013
    Posts:
    375
    A rather old thread, but still current.
    I know Git well and lately I've also used Unity Collaborate.
    Collaborate is a relatively young tool and certainly can be improved in future versions.
    In the meantime I've written a Git beginner's guide (in my language: Italian) that doesn't need to use text commands.
    Maybe it could be useful to someone. ;)
     
  37. kyuskoj

    kyuskoj

    Joined:
    Aug 28, 2013
    Posts:
    56
    Can I use both at the same time?
     
  38. usmanshahidm1

    usmanshahidm1

    Joined:
    Dec 8, 2019
    Posts:
    2
    Is there support for code reviews in collab? Or do I have to use both git and collab if I need code reviews.
     
  39. eaquino_unity

    eaquino_unity

    Joined:
    Aug 13, 2019
    Posts:
    13
    I have the same doubt.
     
  40. kyuskoj

    kyuskoj

    Joined:
    Aug 28, 2013
    Posts:
    56
    Now I am using both, and no problem with it.
     
  41. eaquino_unity

    eaquino_unity

    Joined:
    Aug 13, 2019
    Posts:
    13
    Could you create a guide for me? for now I am configuring git with biybucket and I have many problems with the Library and Temp folders, even though I add them in gitignore to ignore them they always mark me that they have modifications and they do not allow me to do a pull or push to my project.
     
  42. kyuskoj

    kyuskoj

    Joined:
    Aug 28, 2013
    Posts:
    56
    I am using Github with https://github.com/github/gitignore/blob/master/Unity.gitignore
    no other modifications :)
     
  43. eaquino_unity

    eaquino_unity

    Joined:
    Aug 13, 2019
    Posts:
    13