Which NetBeans projects files should go into source control?

Version ControlNetbeansProject

Version Control Problem Overview


We normally use Eclipse for a particular Java project, but recently I imported the project into NetBeans to use its dialog building features.

Since I'll probably come back to this, I wanted to store the NetBeans project files into version control. However, I don't want to commit files that are "mine" versus "project", i.e., files with my own settings that would conflict with another user's.

NetBeans created the following structure in the top-level project area:

nbbuild
nb-build.xml
nbproject
    <various files>
    configs
    private

Clearly nbbuild is build output, so that won't go in. The nb-build.xml file seems likely, as does most of nbproject. However, nbproject/private suggests it's "mine". Peeking at "configs", it's not clear to me if that's mine or project...

Anyone have some guidelines?

Version Control Solutions


Solution 1 - Version Control

The NetBeans knowledge base article on project files & version control discusses the NetBeans project files, with loose advice about which files are project specific (i.e. can be shared via version control), and which are user specific.

Here is the section on version control:

> If the project is checked out of a version control system, the build (or nbbuild), dist (or nbdist), and the nbproject/private folders should not be checked into that version control system. > > If the project is under the CVS, Subversion, or Mercurial version control systems, the appropriate "ignore" files are created or updated for these directories when the project is imported. > > Though nbproject/private should be ignored, nbproject should be checked into the version control system. nbproject contains project metadata that enables other users to open the project in NetBeans without having to import the project first.

Solution 2 - Version Control

It turns out that both Thomas & Petercardona are correct, in a way. NetBeans recommends that you only import source code and/or documentation. Oh and the nbproject folder but not the nbproject/private* folders.

From the NetBeans Knowledge Base article on importing Eclipse projects:

> Version Control Considerations > > If the project is checked out of a > version control system, the build (or > nbbuild), dist (or nbdist), and the > nbproject/private folders should not be checked into that version control > system. > > If the project is under the CVS, > Subversion, or Mercurial version > control systems, the appropriate > "ignore" files are created or updated > for these directories when the project > is imported. > > Though nbproject/private should be > ignored, nbproject should be checked > into the version control system. > nbproject contains project metadata that enables others users to open the > project in NetBeans without having to > import the project first.

Solution 3 - Version Control

None.

Only source files, build scripts, and documentation that is not automatically generated (e.g. - the output of tools such as JavaDoc and Doxygen) should be checked into a repository. Things like project files, binaries, and generated documentation should not be checked in.

The reason is two-fold. First, you don't want to overwrite another developer's project settings with your own. Second, other developers might not be using the same IDE as you (or even an IDE at all), so don't give them any more than they need to build (the project or its associated documentation) or run the project.

Solution 4 - Version Control

As tested with Netbeans 6.8, only the project.xml, configurations.xml and the main makefile (the customisable one in the parent dir of the 'nbproject' dir, with pre/post target definitions) must be distributed via the repository. All other files will be automatically (re)generated by Netbeans (Makefile-impl.ml, Makefile-variables.ml, all the Makefile-$CONF, Package-$CONF.bash). The 'private' dir should also be ignored, obviously.

Solution 5 - Version Control

You can check also
https://github.com/github/gitignore/blob/master/Global/NetBeans.gitignore

This open source project contains
A collection of useful .gitignore templates

Solution 6 - Version Control

Toptal has a useful tool for developers wanting to find out what should go on a .gitignore file.

https://www.toptal.com/developers/gitignore

For netbeans, just search Netbeans and it should return a template something like

> **/nbproject/private/ > > **/nbproject/Makefile-.mk > > **/nbproject/Package-.bash build/ > > nbbuild/ > > dist/ > > nbdist/ > > .nb-gradle/

Copying and pasting this into a .ignore file on your project's directory should solve your problem.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPeter CardonaView Question on Stackoverflow
Solution 1 - Version ControlPeter CardonaView Answer on Stackoverflow
Solution 2 - Version ControlRichard HurtView Answer on Stackoverflow
Solution 3 - Version ControlThomas OwensView Answer on Stackoverflow
Solution 4 - Version ControlJohan BouléView Answer on Stackoverflow
Solution 5 - Version Controlahmednabil88View Answer on Stackoverflow
Solution 6 - Version ControlWilliam MedinaView Answer on Stackoverflow