Mercurial ignore-file for Eclipse and Android development
Asked Answered
Z

5

21

I have seen samples for Mercurial ignore files for Visual Studio, amongst others.

I've just started playing around with Android development, and I also use this time to experimenting with Mercurial. So my question is: does anyone have a good example of a .hgignore file to use for Eclipse and Android development?

For starters I've got the following myself:

# use glob syntax
syntax: glob

# Ignore patterns
.metadata\
bin\
gen\

Are there any other ignore patterns that should be included? Should for instance the Eclipse files .classpath and .project be omitted from version control as well?

-- Edit below --

I haven't quite gotten the answers I hoped for yet, so I'll put out a bounty and try to specify a bit clearer what I'm looking for.

After experimenting a bit myself, I seem to have found that the suggested .hgignore listed above seems to be sufficient. The only addition I've made, is one line with .settings (this was a folder that appeared after I ran Android Tools -> Fix Project Properties). I've also found that (as mentioned by Ry4an) that the Eclipse files .classpath and .project should not be excluded.

I am however uncertain that this small ignore file will be sufficient when I get to projects a bit bigger than the basic tutorials (if it actually is all good, please explain why, and you'll get the credit). So to summarize what I'm looking for:

  • I want a concrete example for a .hgignore file for an Android project under Eclipse
  • The ignore file should be so that whenever I check out a copy of the repository at a new location, it should work straight away (i.e. without having to mess with paths and references, add missing files etc.)
  • Please also explain why your include file looks like it does (I want to understand why certain files/directories are excluded (and why some definitely should be included))
  • If you include OS specific excludes, please also state so (I'm running on Windows 7 btw.)
Zeldazelde answered 9/9, 2010 at 13:57 Comment(2)
Updated the original question with extra information after adding the bounty.Zeldazelde
I wouldn't ignore the .settings directory. If you're finding that the Android plug in is including things that are specific to your environment (e.g., hard coded paths) in some files within, then ignore those files individually. I also prefer not to create a repository off of my workspace, and so I don't typically have .metadata in my ignore list (this gives me the flexibility to import projects from multiple repositories, though I'm not sure how important that is to you).Neuroglia
F
13

The eclipse files should definitely be added. The general guideline is to add:

  • everything that is hand written/typed
  • the minimal subset of everything else necessary to build the project

That last one is where your judgement comes in. It clearly excludes the .jar files you build yourself and your final .apk, but does it include third party .jar's you use? Some people do include them, but better is to include a configuration file for a dependency manager like 'ivy' which lets the next builder download the requirements they need automatically.

After auto-creating a project in my tools of choice, I'll just do a command like this:

hg status --unknown --no-status >> .hgignore

which adds the list of all unknown files to .hgignore. Then I go in and remove things I wants saved (ex: .project) and wildcard files that will grow siblings (ex: **.class)

Fayola answered 9/9, 2010 at 14:17 Comment(3)
+1: The hg status --unknown --no-status >> .hgignore seems like a nice trick, thanks :) As I'm fairly new with Android development, I was however hoping for a comprehensive and concrete example - as you point out, the second point of the two is the hard part.Zeldazelde
Just for future references (and, as it would be a shame to late the bounty go to waste ;): even though not completely specific, this answer provided what I found to be the most useful. As for a full example, I ended up using what I wrote in the original post (and that seems to be sufficient, after some weeks of experimenting).Zeldazelde
Are you using glob or regex?Hauptmann
M
8

There's a very nice sample .hgignore for Android at http://androidfragments.blogspot.com/2011/11/hgignore-for-android.html

Mashie answered 12/9, 2012 at 0:25 Comment(0)
R
5

Here is my hgignore:

syntax: regexp
\.DS_Store
.swo
.swp
.metadata/
/bin/

Whether it's a good one or not is a separate issue

Riojas answered 9/9, 2010 at 16:4 Comment(3)
+1 for a specific example. I will however wait a bit for more answers/comments before accepting, to better tell whether it's a good one or not;)Zeldazelde
Shouldn't you be escaping the dots in lines 3-5?Sickener
The Android-specific `gen` folder is at least missing from this one, that I'm sure of.Zeldazelde
C
1

well if its android projects than

local.properties should also be ignored

Calcify answered 9/9, 2010 at 14:17 Comment(1)
I think local.properties if from Android Studio.Hauptmann
S
1

I have found a good example of .hgignore. It works for me.

#Mercurial Ignore Rules for Android
#Save as .hgignore in the repository base directory and add it to source control.
syntax: glob
*.class
*.apk
*.dex
*.ap_
*.suo

syntax: regexp
^(.*[\\/])?gen[\\/].*
^(.*[\\/])?bin[\\/].*
^(.*[\\/])?obj[\\/].*
^(.*[\\/])?log[\\/].*
^(.*[\\/])?obf[\\/].*
^(.*[\\/])?jars[\\/].*
^(.*[\\/])?jar-sources[\\/].*
^(.*[\\/])?javadoc[\\/].*
^(.*[\\/])?\.svn[\\/].*
^(.*[\\/])?\.metadata[\\/].*
^(.*[\\/])?\.settings[\\/].*

Source: http://androidfragments.blogspot.ru/2011/11/hgignore-for-android.html

Shaunteshave answered 4/7, 2014 at 1:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.