Synchronize view in EGit doesn’t show non-workspace files from its very beginning. This issue seams to be very complicated and also it seams to require lots of hacking on team framework and eclipse API.
Few days ago Ilya Ivanov from Intland pushed into our gerrit a patch that should fix this issue. I was very surprised that this change is so small and simple. It only works partially because the compare editor cannot be launched for non-workspace files. In my opinion this patch cannot be merge into master branch without this core functionality, so today I spent about 3 or 4 hours hacking on that topic … and here are results:

As you can see, there is master pom file (with isn’t imported into eclipse workspace) in synchronize view and on the left hand side there is a compare editor for it, showing what was changed ;>
Currently both patches are waiting for review in gerrit, but I think that they will be merged into master soon
Last week I spent in Walldorf (Germany) at EGit hackfest. I want to attend on all sessions therefore I’ve decided to go there day before and leave Walldorf day after event. Therefore I had some time that I can spent on short tours in Walldorf and Frankfurt. Here is a short summarization things that we manage to achieve during this time in case of synchronize view in EGit.
With Christian Halstrick we manage to speed up synchronization operation. Our starting point was comparing branch stable-0.7 against stable-0.10 from EGit repository with at the beginning takes around 2 minutes. Then using yourkit profiler we manage to reduce synchronization time down to less then 20 seconds on the same data set! The first set of patches that gives most acceleration were already merged into master and are available in latest nightly build of EGit, but there are also some open change sets in gerrit pending for review that should give some performance boost. Even with this improvements synchronization on some large repositories can take more then 5 minures, therefore this topic is still open for me and I’ll continue to hacking on it in feature. Currently one of the slowest part is mapping path of file/folder from git into eclipse’s workspace resource, but this should be improved by new implementation of IWorkspaceRoot.getFileForLocation()/IWorkspaceRoot.getContainerForLocation() in Eclipse 3.7 ;>
Second task that I manage to start working on during hack sessions is supporting context menu action in synchronization. I didn’t finish it but most of code is currently written. I only need to improve some things and test it. I think that in week or two this change should appear in gerrit.
This was great opportunity for meet persons that I only know from mailing list or code reviews in gerrit, especially to meet Matthias Sohn and Stefan Lay
and also rest of EGit team members ;>
I want to thanks Matthias Sohn for organizing such great event and SAP for hosting it!. Many thanks also for my employer NCDC for refunding me part of my trip.
Few days ago my Macbook just died therefore I was forced to buy a new laptop. After a quick overview on marked I’ve decided to buy an Toshiba Portege R700 with Intel i5 processor. Unfortunately it has an Broadcom 4727 Wi-Fi card with is only supported by staging brcm80211 module. Generally it works pretty well on 2.6.37 kernel, if you shutdown and power up laptop, but when you use suspend like I do it doesn’t get up after resume. The module needs to be reloaded to work again.
Thanks to Arend van Spriel this issue were fixed but patch that was send on linux-wireless mailing list doesn’t apply on vanilla 2.6.37 sources. To get this working I decided to back port this patch, and it appears to be was very simple task
. So if you are have similar problems with BCM4727 on 2.6.37 like I had here is a patch that clearly apples on 2.6.37 and fix this issue.
diff -uNr drivers-orig/staging/brcm80211/sys/wl_mac80211.c drivers/staging/brcm80211/sys/wl_mac80211.c
--- drivers-orig/staging/brcm80211/sys/wl_mac80211.c 2011-01-05 01:50:19.000000000 +0100
+++ drivers/staging/brcm80211/sys/wl_mac80211.c 2011-01-13 17:28:50.000000000 +0100
@@ -299,7 +299,6 @@
wl_info_t *wl = hw->priv;
ASSERT(wl);
WL_LOCK(wl);
- wl_down(wl);
ieee80211_stop_queues(hw);
WL_UNLOCK(wl);
@@ -336,6 +335,14 @@
static void
wl_ops_remove_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
{
+ struct wl_info *wl;
+
+ wl = HW_TO_WL(hw);
+
+ /* put driver in down state */
+ WL_LOCK(wl);
+ wl_down(wl);
+ WL_UNLOCK(wl);
return;
}
@@ -1356,7 +1363,6 @@
return 0;
}
-#ifdef LINUXSTA_PS
static int wl_suspend(struct pci_dev *pdev, pm_message_t state)
{
wl_info_t *wl;
@@ -1371,11 +1377,12 @@
return -ENODEV;
}
+ /* only need to flag hw is down for proper resume */
WL_LOCK(wl);
- wl_down(wl);
wl->pub->hw_up = false;
WL_UNLOCK(wl);
- pci_save_state(pdev, wl->pci_psstate);
+
+ pci_save_state(pdev);
pci_disable_device(pdev);
return pci_set_power_state(pdev, PCI_D3hot);
}
@@ -1399,7 +1406,7 @@
if (err)
return err;
- pci_restore_state(pdev, wl->pci_psstate);
+ pci_restore_state(pdev);
err = pci_enable_device(pdev);
if (err)
@@ -1411,13 +1418,12 @@
if ((val & 0x0000ff00) != 0)
pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
- WL_LOCK(wl);
- err = wl_up(wl);
- WL_UNLOCK(wl);
-
+ /*
+ * done. driver will be put in up state
+ * in wl_ops_add_interface() call.
+ */
return err;
}
-#endif /* LINUXSTA_PS */
static void wl_remove(struct pci_dev *pdev)
{
@@ -1452,10 +1458,8 @@
static struct pci_driver wl_pci_driver = {
.name = "brcm80211",
.probe = wl_pci_probe,
-#ifdef LINUXSTA_PS
.suspend = wl_suspend,
.resume = wl_resume,
-#endif /* LINUXSTA_PS */
.remove = __devexit_p(wl_remove),
.id_table = wl_id_table,
};
diff -uNr drivers-orig/staging/brcm80211/sys/wl_mac80211.h drivers/staging/brcm80211/sys/wl_mac80211.h
--- drivers-orig/staging/brcm80211/sys/wl_mac80211.h 2011-01-05 01:50:19.000000000 +0100
+++ drivers/staging/brcm80211/sys/wl_mac80211.h 2011-01-13 17:17:39.000000000 +0100
@@ -84,9 +84,7 @@
unsigned long flags; /* current irq flags */
#endif /* BCMSDIO */
bool resched; /* dpc needs to be and is rescheduled */
-#ifdef LINUXSTA_PS
- u32 pci_psstate[16]; /* pci ps-state save/restore */
-#endif
+
/* RPC, handle, lock, txq, workitem */
#ifdef WLC_HIGH_ONLY
rpc_info_t *rpc; /* RPC handle */
BTW. This laptop works pretty good on linux. All parts seams to be working properly (I didn’t tested bluetooth, and finger print scaner because I don’t use it), there are only problems after resuming system from suspend like above described problem with BCM4727 (other problems are connected with back light changing and graphics performance).
UPDATE:
It seams that this patch is included in kernel 2.6.38-rc3
Rok 2010 dobiega już końca, dziś jest już pierwszy dzień świąt Bożego Narodzenia, do końca roku pozostało prawie 7 dni (bez paru godzin
). Więc jest to dobry czas na podsumowanie tego co wydarzyło się w kończącym się roku. Jest to już trzeci post tego typu na tym blogu … i będzie to ostatni wpis … tego typu tutaj ale o tym później ;>
Read more…
Java4People is a free polish conference organized in Szczecin (Poland) by and for Java enthusiasts. We already have had two editions in 2008 and 2009, now it is time to launch call for papers for upcoming 2011 edition.
The main topic of this edition is “JVM languages” and everything connected with it (frameworks, IDEs, etc.), but if you have an interesting presentation about other topic connected with Java don’t hesitate to share it with us!
From my point of view I would like to hear about:
and of course about web or application frameworks’ that was build on top of those languages.
We are open for any propositions, if you have one that you would like to present on Java4People don’t hesitate to contact me (dariusz < a t > luksza < dot > org) or leader of Szczecin Java User Group Leszek Gruchala (leszek < a t > gruchala < dot > eu).
Thanks to Mathias Kinzler EGit have initial support for rebasing. Currently only the simple scenario is supported, when there are no conflicts between actual and given branch. Currently the only place from with rebase action can be launched is in Git Repositories view, the ‘Rebase’ option is available on each branch node for given repository.
If you want to test this new feature you should install EGit for ours “Bleeding Edge Builds” update site.
I think that every one knows GitHub and as you should know that we can host there for free ours open source project’s but if we want to have a private repository we should pay for it. It seams fair … but what if I don’t want to pay ? I can setup my own server somewhere or … use one of on-line file hosting service like dropbox (for free we get here 2GB, this is lots of space for git repositories
).
How it is possible? It is only about files. As we all know git keeps everything inside .git folder, therefore we can put it in dropbox. To do it we only need to have an account and configured dropbox-folder on ours hard drive, and here is recipe:
- First of all we should add new remote to our git remote configuration, I’ll call it dropbox:
git remote add dropbox file:///home/lock/path/to/dropbox-folder/project.git
- Now we should create folder project.git
- Launch a terminal and enter project.git folder
- Run:
- Go back to yours project directory and push into dropbox:
Viola! Dropbox daemon will automatically synchronize with remote “repository”. And there is another feature of this solution, you can share this folder with yours friends!
But there are also some disadvantages:
- No access control – if you share yours project with friend she (or he) have full access and can even delete everything … but you always have yours local copy
- No web interface – this obvious … I think
This solution I figure out few minutes ago and use it to backup my BS project, and it seams to be working very well
UPDATE:
As Tim said it is also possible to have a free Git hosting on bettercodes.org. To be honest I didn’t check it because solution with dropbox meets my needs.
NEXT UPDATE:
According to Machu’s comment, there is also assembla.com that gives 2GB for SVN or Git repository.

W dniach 20,21 Listopada w Szczecinie odbędzie się trzecia edycja konferencji OpenSource. Tematyka jest bardzo szeroka, agenda jest dostępna tutaj; dostępny jest również filmik promujący konferencje ;>
Ja tam będe, a Ty? ;>
I’m sure that when you trays automated dependency management and application building/deploying you will never want to abandon this kind of comfort that it gives. The same situation is with dependency injection; when you will get it ideas. In “normal” desktop, web, or server side project’s integrating with such tools like maven and guice isn’t that complicated like in Android projects.
Android tooling is very consistent and the ADT plug-in isn’t integrated with maven. This isn’t a problem when application is relatively small, or when you don’t want to use continuous integration tools like Hudson. But when you enter Android world from “enterprise” web application like I do, you surely would like to use CI, DI and lots more of cool stuff that was available before.
In this post I’ll present simple Android application that will have Maven and Guice support.
Read more…
I love ‘hands on’ presentation they are so awesome and give so damn god impression. I’ve decided to prepare such presentation on Warsjawa 2010. Now I know how much self control and cold blood is needed to give such presentation.
Before Warsjawa conference I’ve prepared a list of features that I would like to show, I even write down list of steps that I should follow during presentation. All demos was two or three times repeated and trained … it looks like nothing bad could happen … ‘but’, yes there always is this short lite word ‘but’.
Presentation starts smoothly and with every minute I been more self confident … until 15th or 20th minute when I was smashed out, just blow away. I was showing merge support and it appears that during three-way merge one of line in example file were deleted. Actually it should be marked as conflicting because I’ve made a small mistake any way this shouldn’t be that way. I was there sitting in front of 50 100 or more persons with a nearly discovered bug in core merge functionality … this is a situation that nobody would like to face it. I can’t just go away, that wasn’t a solution … Actually I stay there and even manage to finish presentation and show History and Repositories view, tagging, resetting and even some other stuff like gerrit and it integration with hudson.
I’ve already create a ticket for this bug in bugzilla and I hope that during next presentation in Szczecin such problems did not occur …