Pulling remote changes with DBrExThe work on the upcoming 4.0 release continues, and as usual we try to keep you updated and also share how it is looking so far, so feel free to continue sending feedback, comments and so on. Remember you can see most of the 4.0 screenshots here, and some videos here (www.youtube.com/codicesoftware).
Since we’re already using 4.0 internally (remember, “eating our own dog’s food”), I wanted to share some of the new things that can be easily achieved with the new “branch explorer”, the “distributed branch explorer” or “DBrEx” as we name it internally.
I’m currently working on a task that is on my local repository on my laptop, and I’m about to start a new one and hence create a new branch for it (remember, the branch per task pattern). But, I’d like to start the task from the latest code on a certain branch, so I’d like to know if I have to “pull” some changes from the “master server” at the office.
My situation right now is the following: I have all the changes in branch /main/DAG up to the changeset after BL199, but I’d like to know if there are newer csets on the remote server. Also, please note that the colors of the changesets are different: the “green ones” are csets created on my server, the blue ones changesets that have been “replicated”, hence create remotely (this is already a new feature on 4.0)
In order to see “what’s new” on /main/DAG I’ll activate the “show remote changesets” option and grab data “for this branch only” from the main server. Plastic is “clever enough” to propose known repositories (repositories you’ve imported data from, in my case, only the main server so far). Activating it looks like the following:
Once the “remote data” is retrieved, the “DBrEx” will render not only “data from the local server” but also data grabbed from the remote one. Look at the following screenshot to see how “remote changesets” are rendered: we use “dashed lines” to highlight remote csets (csets that are not on your repo).
So, just a glance at the DBrEx and I know there are changes I’ve to “pull” from the remote server. In fact, I can do more than that, since I can right click on a remote changeset and “diff the changes”, which I think is a really neat feature (note to observers: yes, the options “merge from this changeset” and “create branch” shouldn’t be enabled on remote csets… that’s why this version is still internal, isn’t it???)
One really interesting note: compare the two previous screenshots: do you see branch br:/main/DAG/SCM9472?? Ok, when I didn’t have “remote data” I wasn’t able to find that the branch was already “integrated” remotely into the parent branch /main/DAG, but rendering the remote data for /main/DAG doesn’t only show me the new changes but also tells me that the branch /main/DAG/SCM9472 has already been integrated into /main/DAG… remotely. Cool, isn’t it?
Next thing is pulling the new changesets, and I’ll do the same I used to do in 3.0: just right click on the branch, go to replication and “pull this branch”. Easy.
And then my DBrEx will get updated once the remote changesets have been “pulled” from the remote server, as you can see below. Now the changesets are “local” (although coming from a remote source (that’s why they are blue)) and they’re not rendered with “dashes” anymore…
So, as you can see, 4.0 is all about DVCS, and the DBrEx is the next step to render distributed version control information graphically… or, at least, that’s our goal! :)