Source Control in Lotus Domino Designer - eclipse

We have been using Domino on a large project for years without any real source-control (other-than server backups). So, I was rather pleased when I noted the latest Designer 8.5.3 has potential integration with SVN.
I was unable get SVN working just by following the original instructions for as already noted on Stackoverflow the update sites have moved. The solution posted on OpenNTF, only half worked, with Domino still croaking at GEF, Mylyn and some other missing plugins. After finding and installing them, I still do not seem to have source-control integration.
What I have now is the ability to create on-disk projects but I do not seem to have any source-control features. I was expecting to see menu items for commit, update, revert …etc – is this how it works in Domino?
I can of course create a repository to commit the on-disk project to but I was hoping for integration inside of Domino. Whilst having years of experience in programming I’m a novice with Eclipse. I assume that I’ve done something wrong with installing the plugins? it was certainly a complicated process trying track down missing plugins.
Has anyone tried this recently and succeeded? What files do I need to install, setting tweak, …etc, to ensure this works? I’m happy to install my Designer fresh and follow a list of instructions.
Also, am I understanding how the integration works? Will I get command integration within Designer or do I have to work separately with the on-disk projects? I was really hoping for this be easy to integrate into normal workflow so I can convert the team to using it (adding too many extra or complicated steps is unlikely to create a conversion).
I posted a screenshot of my installed plugins in case this is helpful.
Mercurial? As an aside, has anyone used Mercurial instead of SVN with Designer? I would rather use Hg as I’m using this for related Dojo projects and will be easier for the team to use one system. However, I will settle for SVN as any source-control is better than non.

Update: This is answer is now out-of-date. It is useful in that it should point users in the right direction but it isn't really a working answer anymore. I no-longer develop on Lotus Notes so I cannot update it to a current solution.
I managed to figure this out eventually but will post the solution, just in case anyone else has the same trouble.
The answer by Per Henrik Lausten was very helpful as it showed me the route to follow through the menus. The main problem is that I'm not used to how Eclipse works so I didn't realise you had to go to the "Team" menu and "Share Project" after creating the on-disk project. When I did this I discovered that both SVN and CVS were already available.
I found that SVN did not like the file:// protocol (perhaps a windows issue?) Since, I could not arrange for an SVN server on our network, I decided to go down the Mercurial route. This was better for us as our other projects are stored in Mercurial.
Setting-up Mercurial with Lotus Designer 8.5.3:
In Domino preference (File -> Preferences), set: Enable Eclipse Plugins in the Domino Designer section to ticked.
Also in the preferences set: Use Binary DXL for source control operations to unticked (File -> Preferences, Domino Designer -> Source Control). Without this ticked I was not getting text for my Lotusscript agents and it would be difficult to compare changes.
Go to File -> Application -> Install:
Select Search for new features to install and click Next.
Click Add Remote Location button
Add the url: http://mercurialeclipse.eclipselabs.org.codespot.com/hg.wiki/update_site/stable/ and give it a suitable name
Once you've added this, ensure it is ticked in the location list and click Finish
Design will then search for updates and give you a list. Untick "Only show latest version of a feature per update site"
Tick MercurialEclipse 1.6 from MercurialEclipse Stable Releaes. I found that the latest version does not work, however a previous Stackoverflow conversation indicates that version 1.6 does work.
Click finish and allow it to install.
You will be asked to approve various plugins and then to restart.
MercurialEclipse, should now be installed!
To start using Mercurial with a Domino Application:
Right-click the application in the Applications tab, select: Team Development -> Set Up Source Control for this Application.
Give the project a name and choose a location for the project to be stored.
Designer will then do a DXL export of the database to your chosen location. A Navigator tab will appear next to Applications.
Right-click your new disk-project in the Navigator and select: Team -> Share Project...
Select Mercurial from the Repository types and allow Designer to create the repository.
You should now have access to various Mercurial functions via the Team menu. (You need to make your first commit.
When you make changes you want to commit to source-control, you need to:
Right-click the application and choose: Team Development -> Sync with on disk project...
Go to the Navigator tab and right-click your on-disk project, selecting team.
Most of the above steps should be obvious but decided to post full details in case anyone struggled like I did with Eclipse and how to use it properly. Once I figured it out, it really was quite easy.

Keith Strickland has created a series of blog posts on using source control with DDE. They might help you:
Keith Strickland: source control in DDE part
1: http://www.keithstric.com/A55BAC/keithstric.nsf/default.xsp?documentId=B236F39DEAF6C52F85257A72001157BF
Keith Strickland: source control in DDE part
2: http://www.keithstric.com/A55BAC/keithstric.nsf/default.xsp?documentId=B5D76A6DA163DCB585257A7C004802B6
Keith Strickland: source control in DDE part
3: http://www.keithstric.com/A55BAC/keithstric.nsf/default.xsp?documentId=C2C46D278948A24985257A7D0055D25E

Related

TFS2010: Move source with history and then delete old project without losing history?

Context: I'm currently working as an intern at a company which has made the move to TFS 2010 from VSS. TFS has been in use here for a couple of months now, but in the early period after the move some 'mistakes' were made in setting up the projects. After while the need for a custom team project template was recognized. The template has been developed and is now being introduced into the organisation. (small web development company, many small projects)
Question:
We're trying to migrate old projects to the new template by setting up new pojects with the custom template. We'd like to move the sources of the old projects into projects making use of the new template. The history of the sources should be preserved for support reasons. It is undesireable for the old projects to appear in the Team Collections' Team Projects list, so we'd like to hide them if deletion is not an option. (to reduce the garbage in the list)
I have some solutions on my mind to get the job done, but I'm unsure if they'll work out. (even after spending some time researching the issue on the web)
1: Doing a branch from the old project into the new and then deleting the old project. I think it should keep the history of the the old project has been deleted. Some people over here are very vocal about this not being the case causing some strife. Before pushing this option I'd like to be sure this will work
2: Hijack the migration tool to migrate sources between projects (possibly via via a temporary Team Collection). I have read this could be an option, but the details of how to execute such a move are still unclear to me. It seems this has a lot of caveats attached to it and can be cumbersome to execute. (I'm no superman when it come to these matters, but so is noone else over here)
The Migration guide seems to suggest that this might be possible, but I can't determine if this scenario is supported, and how to recover if things go wrong.
Maybe it is possible to set up the new projects and hide the old projects from the team collections' team projects list without deleting them? (I wonder if there is some kind of inactive setting for team projects, I can't seem to find any such option after exploring the tfsconfig tool of the admin console)
An explanation of how to best apporach this problem and possible solutions would be much appreaciated.
Doing a branch from the old project
into the new and then deleting the old
project. I think it should keep the
history of the the old project has
been deleted.
I'm pretty sure if the old team project is deleted, the part of history that is associated with that team project will also be gone, see here for more details. You can confirm this by doing a quick test move if you want.
Maybe it is possible to set up the new
projects and hide the old projects
from the team collections' team
projects list without deleting them?
You can mostly achieve this by denying read access (GenericRead) to most of the users on the old team projects. Of course for the Project Collection Administrators who have this permission by default on all the team projects, the old team projects still appear in the list for them.
Good luck!
There is no firm relationship between a team project and a particular part of the source control tree. Let's say you have a team project named "Mistake". You have source at "$/Mistake". You can now create a new team project named "Got It Right", and specify to use the sources at "$/Mistake".
Use the source control explorer to move a solution between projects. Here is how the projects and solutions appear before moving a solution.
The move selection is found by either
right-clicking the solution, choosing Move from the drop-down menu
Selecting Move from the Source Control menu found under File in the drop down menu

How to set up an SCM in Xcode?

I know Xcode can be hooked up to an SCM. But how would I set this up from scratch? How to check out / commit files into that, after setting it up?
A great guide for setting up subversion repository & configuring with XCode - http://iphonedevelopment.blogspot.com/2009/03/version-control-is-your-friend.html
Other useful resources -
1) http://developer.apple.com/tools/subversionxcode.html
2) Which SCM system for Xcode?
3) http://www.covertapps.com/development/6-setting-up-your-xcode-scm-repositories
Thanks,
Sagar
Once it is set up, several new menu items appear in the SCM menu. You can right-click over specific filenames and perform some SCM operations that way.
You can also right-click over "Groups & Files" and enable "SCM" there, which will show which files are new or modified.
I never used Xcode's SCM features for anything more than to see what files I've modified, a feature that only helped me find the code I was currently fixing. For all the updates & commits, I would use the command line, but that's a personal preference. I'm a long-time command-line CVS and SVN user. It is faster for me on the command line.
I highly recommend starting with git - while I once preferred perforce I don't like paying for it and lack of Xcode integration makes it tedious. Git is supported in Xcode 4. Using it without integration for a month or two would be invaluable as you will then understand more of what is going on... SCM, like data backups, is only any good when you understand it and use it right.
I like git because it can be used as a local SCM with replication/sync with a central repository. It is widely used and actively maintained. It is free & open source, and I have used it as part of a team delivering a very complex and successful iPhone app.
I really like Git Tower as a GUI.

Is there a way to mark a project in eclipse if a CVS Update is pending?

when i startup eclipse, first thing i usually do is updating my source code to pull in changes from other developers (or from my home work). Sometimes i just forget it. But as we are usually working in a small team on HEAD, we all usually want to have the latest sources.
It would be nice to let eclipse automatically (like every hour or so), synchronize its workspace with CVS server and mark the project with a label for pending updates (of course it shoul dnot update the source code automatically!)
I have searched the web for it and i found some comments on CVS watch/edit feature. But i don't like to call edit every time i work on a file and i don't want to be informed by mail. All i need is a little icon at my project which says "You might run cvs update before you work on".
Is something like this available as a feature in eclipse?
regards
Janning
Well, what you're asking for is precisely what the CVS watch/edit feature is for. I agree that the emailing issue is a major PiTA but hey - remember - CVS is quite old; many CVS concepts appear a bit odd nowadays, whereas they appeared more reasonable when CVS was first written.
I cannot think of any internal, Eclipse-provided way to do what you're asking. You basically need the "Synchronize" view to be updated periodically - and, the way that the CVS plugins are written - that view is only populated upon startup and whenever you select "synchronize with repository".
Isaac

Managing multiple branches in Eclipse, or getting a VS-like setup for Eclipse

In VS, it's simple. Everything the project needs is stored in the project folder and all VS settings are stored in one place. Eclipse, however, stores Eclipse settings with the project and keeps a .metadata at the workspace level which is needed to detect the projects in the workspace. Thus, I can't simply branch a project and then open it in Eclipse. I need to set up a workspace, branch it into that workspace, copy over all my workspace settings (settings import/export doesn't even work right in Eclipse) so I have the same Eclipse settings, then do some kind of import to get the project in the workspace. This is what I generally refer to as a pain in the freaking neck, and it causes me to not branch any Java projects and to keep them all in one folder. This is also a pain.
Is there any way I can get a setup where I can just branch a project and open it in Eclipse, while maintaining the same Eclipse settings?
UPDATE: The current state of the question is expressed by the comment to soru's post.
Pretty sure you want to:
Keep the same workspace for all projects (or maybe a few, at the level of say 'hobby' and 'work').
switch between different branches in the same project by using the features of your version control tool/plugin
if you want to work on multiple branches at the same time, just create two projects, and manage them both as above.
if you want to temporarily hide the inactive version, use the 'working set' feature.
The main limitation is that you might want to have projects with the same name, but you can't. So sometimes you have to make up a project name different from the underlying folder name.
In general, mapping between VS and Eclipse:
Installation <-> workspace
Solution <-> working set
Project <-> project or folder or VC system branch or working set node
Refs:
VS object model
using working sets in Eclipse
working with branches in subclipe
Well, I'm not a fan of keeping any IDE specific settings in the repo, but when I do I keep only .project, .classpath and .settings.
You can also keep you settings at the workspace level (Windows->Preferences),and not on the project level (Project->Properties).
Also why do you create a seperate workspace for branches? You can keep it in one workspace, no need to create another one.
You could also use "switch" in subversion (I don't know if that's what you are using, but other revision systems should have something similar) and go to the branch you have created.
(of course if you wan to work concurrently on more than one branch then it doesn't help)
I can't speak to the Eclispe problem, as i'm only a n00b user, but I can speak to the secondary question.
I've been working in systems for a number of years that ended up needing to have various branches of the same code done for a variety of reasons.
One of the best reasons for keeping specific settings in project-specific locations is that so the various compiler / sdk / etc. settings & files can be specific per-branch and not collide between branches.
This allows, for example, for the work to upgrade a code set to a newer sdk/compiler to be done without impacting the ability to work on the existing "main line" code set with the previous sdk/compiler should the need arise.
In my experience in the computer game industry as a core technology wog, this happens a LOT.
I'm sure the same situations occur outside the computer game industry, maybe just not at the same pace.

How to start a major iPhone app update in Xcode

I have an app in the iPhone app store and have released several minor updates to it. I want to begin work on some major feature additions and reorganization, but don't want to lose the source code of my most recent version in case everything goes horribly wrong.
Should I start a new Xcode project from scratch and copy my existing source in? If I do this will I be able to submit the build from this new project as an update or will Apple complain that the build comes from a different Xcode project?
I've seen (but not used) Xcode's "Snapshots" and "Source Control" features - are these what I'm looking for?
Any help or direction greatly appreciated.
I would suggest getting your project into some kind of Source Control. The popular ones these days are Subversion (Xcode has built-in support for it, but the support is pretty crappy), git, and Mercurial, all of which run great on the Mac.
You would add your project to a git/svn/hg/etc repository, and then "tag" the repository with something meaningful ("Shipping Version 1.3" or something) (alternatively you could just branch your project at its current state and give that a meaningful name). Then you can do your developments, add and commit the changes to your repository. If you need to revert back to your old shipping version, that's quite simple because you tagged it before you started work (think of a tag like a snapshot).
The other option is to start a fresh Xcode project and copy things over. I have personally done this and shipped just fine to the App Store (just make sure things like your app's bundle id "com.whatever.app" matches with the original one, and make sure you codesign properly) and you're good to go.
Having said that, unless you have a really great reason to start with a fresh project, you're probably better off using source control management with one of the aforementioned tools (git is my preference).
You are using some form of source control right? If not, stop what you are doing and make sure to set up an svn repository. Svn is bundled with your mac and integrates with Xcode.
You also may want to start thinking about doing backups...
I highly recommend you check out Git. There is great Git support built into XCode 4, and you can use Git just fine with XCode 3 as well.
One great thing about Git is that you do not need a server to take advantage of the source code management features. It is a lot easier for a solo developer to work with than SVN once you get your head wrapped around it.
I also highly recommend GitX - a free graphical UI for Git that is absolutely amazing.
One other recommendation it GitBox - a simple tool that allows using a Dropbox as a Git master repository. This is great for sharing code between multiple machines without needing to have or pay for Git hosting at GitHub or elsewhere.
You can either do what the people said before, and use svn git or the like, OR if you don't want to mess around with any of that you can simply create your own version control by copying and pasting the folder and name it "project name x.x" and modify the version without the version number on it
snapshots are the first step. when you are comfortable with them you can hook up to an SVN server for your offsite backup
just make a snapshot after your distribution build and label with the version number
The quickest, easiest, short-term solution is to select the Xcode project folder, and duplicate it. This will create a duplicate of everything in the project. Apple won't care that it comes from a duplicate project.
For the long term, look into setting up an SVN. This will help you save your previous versions every time you make changes.
Since you are new to source control management so might I suggest using Subversion.
Subversion has less features than Git, but you don't have the confusion between pushing and committing (locally vs remotely) and you will find there is more software that supports Subversion than Git or Mercurial.
If you need a quick backup, you can always zip the current working folder for your Xcode project, then name it something like:
MyApplication-Version-1.00.zip