views:

126

answers:

2

Hey, imagine a plain webapp with a log4j.properties which is under version control. I can't add it to svn:ignore because its a mandatory file. If i make custom changes for development and i don't want to commit them, i have to watch out for accidently commits. For one file it's easy to handle, with 3 or more files it becomes creepy.

Is there a way to disable these files temporary from svn commit? So its easiert to commit? I'm working with svn and subclipse.

+5  A: 

The typical way to handle situations like this is to do the following:

  1. Make a copy of the file, under a name that indicates that it is a template
  2. Commit the template to your repository
  3. Ignore the original file

This way, you will have a fresh copy lying around, and during deployment you can copy the file back from the template to the real file.

This way you don't risk committing bad changes to this file, and at least for other version control system, you don't risk someone checking the file out and forgetting the lock.

There is no way in Subversion to indicate that a file is only-commit-first-time type of thing, so when you added it to your repository, you told Subversion to keep a track of changes in that file. Unless you manually make sure (or write a tool, or change your tools) to never commit changes to this file, Subversion will not help you.

Lasse V. Karlsen
+1: I use the exact same technique and it works well.
ereOn
Ok, but isn't that very unconvinient for new workers to checkout the project and rename all these files to be able to boot the (thinking of wtp for example, where is no build script which can automatically rename the files)?
codedevour
Let me rephrase my answer. There is no way to get Subversion to do what you want. You basically have to pick which kind of inconvenience you want to use. I have no experience with "wtp".
Lasse V. Karlsen
A: 

The way I do this is to have files named log4j.properties.server, for instance, and then I have set up my deploy script to copy the .server files instead of the normal ones.

AHM