Sencha Inc. | HTML5 Apps

Blog

Ext JS is Migrating to Git

February 13, 2010 | Ed Spencer

Ext JS on GitHubThe last year or two has seen a concerted move towards distributed source control for a large number of open source projects. This has largely been driven by the growth of tools like Git and hosting solutions like GitHub.

With many of our developers moving to Git for smaller internal projects, and with Ext JS 3.1.1 just released, we decided to take the opportunity to move development of Ext to git as well. This move was completed earlier this week, so I’d like to take some time to update everyone on what we did.

First of all, keeping compatibility with svn is of upmost importance to us. Everyone with a support subscription will still have access to the latest commits. Although we are developing the code with Git, every commit is mirrored over to svn.

We’re using our new GitHub account to manage Ext JS. GitHub is quickly becoming the place we put our open source offerings so be sure to follow us on there. The main Ext JS repository is private at the moment in the same way that svn is private. If we get demand for a github repository featuring just the public releases we may set that up too.

Nothing will change for those who download Ext JS via the .zip files we provide on our downloads page. The move to git is an internal choice we’ve made to help us easily manage our multiple source branches. While the main git repository is on GitHub, if we have support subscribers who would like to move from svn to git we can add a mirror on our servers with the same access permissions that svn currently has.

If you’d like to follow the team on GitHub, you can find us here:

We’ll post a detailed write up of the steps taken to perform the migration shortly. Although the git-svn mirroring is working well, documentation on the subject is hard to find so we’d like to give this back to the community and save others some of the pain we went through!

There are 46 responses. Add yours.

Jay Garcia

5 years ago

This is excellent news.

Thorsten Suckow-Homberg

5 years ago

Good thing seeing your VC policies improving. I wonder if that auto-commit-to-svn-thingy will work properly… could mean to handle a lot of conflicts by hand if something breaks.

I wonder how long I’ll stick with svn… it took me some time getting familiar with it (vendor branches, dev branches, deployment etc.) and I wonder if I can adopt any of those best practices to Git.

So much technology, so little time… wink


Keep it up

Thorsten

Brian

5 years ago

You have so much to gain from a public git repo. The ability to easily fork and pull changes back into the main repo will make it much easier for people to contribute to extjs.

james Tyrrell

5 years ago

With GXT soon to follow??? Please yes, please.

Davide

5 years ago

Just following you…a github repository with extjs public version would be great!

Ben

5 years ago

Where is Jack Slocum’s repository?

Martin Rehfeld

5 years ago

+1 for a public Ext repo. I never saw much point in keeping it private anyhow. With a private repo you are missing out a lot of opportunities for getting contributions and fixes.

Just my $.02

Jonathan Julian

5 years ago

I can’t agree with Brian enough.

“You have so much to gain from a public git repo.”

The Ext JS source code is already public; you don’t need to protect it as a “private” github repo. You’ll still have control over who will be direct committers, but I guarantee you’ll gain DOZENS of forks with smart people making everything from small documentation fixes all the way up to big features. You’ll get to choose what to merge back into the main codebase. And all this will be FOR FREE.

It shouldn’t affect your licensing, since a fork is a derivative work, it will be licensed the same. And maybe a move like this will even win back some of the naysayers that are still steaming about the licensing debates from over two years ago.

There’s nothing to lose and so much to gain. Do it now.

Hunkybill

5 years ago

Seems like Tommy, Jamie and Evan have a ways to go in their Github activity smile Best be forking some code and making some commits now to boost those empty dashboards and try and gain some followers…

Also, seems like wondering where Jack Slocum is hiding is kinda like asking if the tooth fairy exists and when is she coming over for beers. I would think it’s pretty clear, Jack is gone daddy gone.

Stju

5 years ago

Nice move!
By the way, what does that mean - My $.02 ??

Nicholas Orr

5 years ago

It would be good if you could give the subscription people access to a GitHub private repo. Then I could use the graph and view commit history in GitHub - this is the main reason I use github.

smile

Nate

5 years ago

I second the request for a public GXT repo.  It’s one of the things holding me back from adopting the tool in addition for the lack of support for the GWT EventHandler system that was introduced in GWT 1.6.

JP Richardson

5 years ago

I would also like to see GXT in Git.

Americo Savinon

5 years ago

Great News, another big step for Ext Js

Ed Spencer

5 years ago

@Nicholas we’ll see what we can do with regards to support subscribers getting read access to Github - I’m not sure if they provide that facility currently though

@Nate we’re looking at the possibility of moving GXT to git

@Stju it’s another way of writing “my 2 cents” - e.g. “my opinion”

Nicholas Orr

5 years ago

@ed yeah I had another look at the plans and it is pretty much full access or no access to private repos, maybe they’ll add it. Plus a private collaborator is a cost of the hosting plan as well, which is another road block. I guess one way to use github would be to have a copy of the repo we sub users could clone from and then push to our own github private repo accounts…

Steve

5 years ago

Who comes up with these names without doing their homework?!

http://en.wiktionary.org/wiki/git

Hunkybill

5 years ago

@Steve,

Did this catch your eye doing your homework? http://en.wikipedia.org/wiki/Git_(software)

For those too lazy to check, the real reason according to Linus for the name: “I’m an egotistical bastard, and I name all my projects after myself. First Linux, now git.”

Restore Deleted Files

5 years ago

This is excellent news.

Max

5 years ago

I don’t get it. I went to http://git-scm.com/ and github’s website and I don’t get what makes git so much better then subversion. I especially don’t understand this statement on git-scm’s site…

“Every Git clone is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. “

If that’s true then why have github? Also, why put ext’s repository on someone elses network? Aren’t you putting all of your eggs in someone elses basket? What is the main problem that subversion causes that git solves? I guess that’s what I’m curious about. Don’t get me wrong, I’m not bashing git. I’ve never even heard of it until this post. But I’m always curious (and a little skeptical) about new technology.

Chris Scott

5 years ago

@Max: One benefit of Github is that anyone can fork anyone else’s public repository.  When the forker produces great new features or bug-fixes, the owner of the original repo can easily merge the forked changes in.

Chris Scott

5 years ago

@Max: For example, I hacked a quick ux extension of CardLayout a couple of weeks ago which simply adds an Element slideIn / slideOut effect when changing cards.

It’s on Github here:  http://github.com/christocracy/Ext.ux.layout.SlidingCardLayout

This component is not perfect currently, but anyone can fork it and add changes in their own repo.  If they issue a “pull” request through Github, I get an email notification that someone wants me to merge their repo with mine.

This process is not nearly as fluid with SVN.

Max

5 years ago

So for example if someone comes out with a patch for a bug in extjs, they can put in a request fork to the ext repository. If the ext admins approve the patch, the fork is fused into the repository and gets pushed out in the next update?

Chris Scott

5 years ago

@Max: exactly.

Chris Scott

5 years ago

@Max:  See the image at the top of this blog-post—that’s a screenshot of the flash-based graph produced by Github (another advantage) of all the forks relative to one’s repository.  Each dot represents a commit.  Hovering one’s mouse over each dot shows a pop with the commit-message.

I suggest for anyone new to Git to at least create a Github account (it’s free).  Try createing a new repository called “foo”.  Try making a commit (edit the README file, for example) and push back up to Github.

Max

5 years ago

So basically SVN still has it’s place in the world. But it’s just for centralized code management. If your small group of developers are going to be the only ones working on a project, you just give them SVN accounts and they can make all the branches they want on there rep.

Git does the same thing except it makes it much more community friendly where code from one developers repository can be “piggybacked” only another developers repository. A patch that one developer made can just be branched to another developers repository, etc etc.

Chris Scott

5 years ago

Max says::  “If your small group of developers are going to be the only ones working on a project, you just give them SVN accounts”

Even if using SVN, one should always be on the lookout for code in their application that can be abstracted into a plugin or ux component.  If a dev team can produce abstract components / plugins, they’ll benefit by placing that code onto Github ASAP—perhaps others will find your code, fork it and improve upon it, saving you time, money and possibly producing novel features / bugfixes for not-yet-encountered situations.

Max

5 years ago

I was just googling around for more info on git and I found this http://www.atlassian.com/software/fisheye/ Has anyone heard of them or know the pros/cons between them and git?

Nicholas Orr

5 years ago

@max branching in svn is a big ordeal, compared to git. If you give git a whirl you’ll find that svn sucks for branching compared to the ease and efficiency of git.

another workflow advantage of git is you can commit without a connection to some central repo as your repo is the only repo that exists, so to speak. Yes you can merge changes from other clones of the repo you’re working on etc.
So you’re able to commit, commit, commit, commit, then after a series of commits and branching and finishing your changes you can wrap all those bits and pieces into a single commit and make it clean (if you want). The point of commit in git is like saving so you can back track, undo, experiment etc.
SVN is figure it all out then if you want to work on another machine you have to commit the work to the central repo so u can checkout again, but you don’t really want to commit these changes just yet - because they could break stuff that others in the team are working on. Then you resort to copy pasting files to usb or some other time consuming process. With git you just commit and push to other machine, then keep hacking away on the other machine. When all is done push to central repo that people treat as the “master”

Chris Scott

5 years ago

@Nicholas: Well said.

Max

5 years ago

I just finished reading the docs on http://learn.github.com/ and I would highly suggest it to anyone new to git. I just have a few questions…

1. Does git solve the commit locking problem in svn? When you commit a change to a file that didn’t have a fresh copy from the repository, it errors out. So for example, if your rep is on v1 and you update your local copy to v1. Someone else makes a change and commits the rep to v2 but you couldn’t update your local rep to v2 because you made local changes and those would get screwed up. You try to commit your changes on v1 and you get an error because the rep knows your trying to make a change to something that already has a change on it. If you get rid of your changes, update your local repository (to v2) and then put your changes back in, and THEN commit, your changes will go through there by bringing the rep up to v3. Does git solve or at least have a work around for that mess because that has screwed me up in so many projects in the past.

2. Does git use file locking like in svn? Where you svn lock a file and no one else can commit a change to that file until your done making your changes to it.

Nicholas Orr

5 years ago

@max

1. this situation is non existent in git… it’s called a merge in git. git will attempt to auto merge changes if it can’t it’ll say it couldn’t and you’ll be able to do it manually.

2. this doesn’t exist in git. when you merge with another repo changes are merged. you don’t have to merge in changes if you don’t want them.

The difference you haven’t picked up yet is a git repo is self contained. There is no central repo in git, the humans designate a repo as being central or authoritative. When changes come in from a different repo you choose how they look/apply in your repo and you don’t have to apply them or have them if you don’t want them…

Max

5 years ago

I guess thats the one thing I’m still fuzzy on. I know git allows you to commit to a local repository and you can optionally sync it with a live one. But I don’t see how light years a head of svn that is. In SVN you make changes to a light copy of your rep and you commit the change to that local copy along with the remote rep. From what I can tell, the main diff in that respect to git and svn is that git allows you to make as many changes as you want to your local copy of the rep and you simply push it to live when ever you feel like. Is that about it? I mean granted it is a better feature but I guess I’m not understanding how much better. Could someone give me a few examples of how amazing that is? I understand what it does, I just don’t see the “wow” factor in it.

Nicholas Orr

5 years ago

@max speed is one. apparently when you are managing hundreds of patches from many people being able to do merge those changes in a few minutes is a big deal… (linux kernel)

There is no hierarchy of repositories, live/local. They are all equal. It is simply a consensus/understanding among people contributing to a project that one repo is considered authoritative.

Also never running into your no1. point above with clashes is pretty productive.

Being able to hack away on a fork and merge in changes from other repos is useful and simple with git. Scanty ( http://github.com/norr/scanty/network ) is a good project example. I was playing with CouchDB and sinatra, scanty is a sinatra based blog tool, that didn’t support CouchDB. Someone wanted CouchDB and so forked Scanty to support it. I came along and updated Scanty to work with latest version of CouchDB. If I want to I could pull in the haml/sass updates people are applying in their forks. I’d like to see you do this with SVN, bottom line is you can’t unless we all have write access to the central SVN repo - which isn’t going to happen.

Git is all about distributed version control - its a different approach/paradigm to SVN. Can a small team that all work in a close way use SVN successfully - yes.  Can they also use git - yes. What does the team want to use?

Having ExtJS in a git repo is quite awesome (especially if we subs can clone from an updated git repo) as we can make changes to our repo while pulling in changes from Ext and everything just works. As bugs are fixed by Ext us end users can slowly remove our fixes and it is all tracked in a repository with history. We could also submit patches they just apply, the Ext devs don’t need to figure out where to put the changes etc.

When lots of people are involved with different relationships to the core team of a project, git is a useful tool. SVN just sucks for use in a project like ExtJS compared to Git. Sure we can use git-svn however being able to do git-git its simple. Like we’ve all managed before Ext team chose to support Git, however managing is not ideal…

Nicholas Orr

5 years ago

@max Getting why Git is great is like “balance” no one can answer all questions about balance and what it is to have it. You either have it or you don’t and when you get balance you can’t get rid of it. They way you get balance is by finding out what balance isn’t, once you’ve found out all the “isn’t” you’re left with what it “is”.

Basically until you start using Git you’re never going to get why people like Git smile

Max

5 years ago

Your right about using git to understand why people like it.

“They way you get balance is by finding out what balance isn’t, once you’ve found out all the “isn’t” you’re left with what it “is”.”

That was so script spiritual. Like the force…

“It surrounds us, penetrates us, and binds the galaxy together”
  ?Obi-Wan Kenobi

Max

5 years ago

btw, thanks for all the help everyone. I already signed up to github and I’m going to commit my very first “hello world” tonight when I get home. I’m so excited!

Max

5 years ago

I’ve been using git for the past few days and now I truly see the light on how easy it is and how it diffs from svn. After my tinkering with git, I do have a few questions…

1. Whats the difference between a tag and a branch? When I do a ‘git show v1.4’ I see almost the same stuff as if I do a ‘git log’ except the git log shows detailed changes. Is there a 1:1 ratio between a tag and a branch or something? Can I stick multiple tags in a branch or vis versa? can I roll back a change to a certain tag instead of a branch?

2. how do I make a branch in a branch so the acii graph ‘git log—pretty=oneline—graph’ branches out. Mine doesn’t branch, it just lists from top to bottom which leads me to believe I’m just branching from the master and not sub branching from other branches.

-Thanks

nperez

5 years ago

A public git repo so we could fork and submit pull requests would be ideal. It would really expand UX, and also allow us to more easily introduce fixes into core instead of using the forums or whatever. Make the most of your GPL licensing by allowing contributors to give something back.

LostLead

5 years ago

Consider that you might be losing customers/users by not publishing your repository.

bi9foot178

5 years ago

It would really easy~

Jack Waszak

4 years ago

Thanks for this interesting information.

Ronna Harley

4 years ago

Love this theme is it a tempate or did you design it yourself

Richard Bronosky

4 years ago

This really confuses me now. I’ve been using jQuery for a few years and just recently got a hankering for creating a PhoneGap app using mobile web technologies. I decided to consider some of the other technologies and Sencha Touch and Ext JS really stand out. However, weird ideas like using a private github repo for a GPL project really turns me off. I’m still trying to decide if I want to get mixed up with Sencha.

FemsAsseguisp

3 years ago

No bad smile, it’s well, to next

José

3 years ago

Still waiting for the public repo… grin

Comments are Gravatar enabled. Your email address will not be shown.

Commenting is not available in this channel entry.