Search code examples
svnsvnignore

SVN ignore like .gitignore


In Git, if I have a project with lots of projects inside, let's suppose, a lot of Java projects, I can just create a .gitignore file in the root and it will "be respected" in the entire repository.

How can I do this for an SVN project?

For example, how can I make an "svn ignore" setup (via cmd line) for a .gitignore like the following?

*.class
*.jar
*.war
*.ear
target/
.classpath
.settings/
.project
.metadata
bin/

The most important part of the question: How can I make it work to new folders inside the root? Example:

I ran svn propset svn:ignore "*.class" . -R in my root and commit. Ok:

root
- folder1/
-- *.class (ignored)
-- other files (ok)
- folder2/
-- *.class (ignored)
-- other files (ok)

Now, I create folder 3. The previous svn:ignore settings will not apply, right? Is there a way to make it so?


Solution

  • You can use svn:ignore. You generally need to tell SVN to apply special properties to the files:

    svn propset svn:ignore "*.jpg" .
    

    (Note the dot at the end of the command.)

    For multiple files you can add a newline character.

    Type exactly like here with line breaks:

    svn propset svn:ignore "file1
    file2
    file3" dir1
    

    Check that the files are ignored:

    svn status --no-ignore
    

    Then commit the code.

    And yes, many duplicate questions are already available.

    You can refer my favorite svn cheatguide.

    You can create a file, svn-ignore.txt, with your ignored files and directories:

    *.class
    *.jar
    *.war
    *.ear
     target/
    .classpath
    .settings/
    .project
    .metadata
     bin/
    

    Now try the following:

    svn propset svn:ignore -RF /root/svn-ignore.txt . [dot for current dir]
    

    -R is for recursive.