[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Help with files changed outside of svn

From: Andy Levy <andy.levy_at_gmail.com>
Date: Mon, 28 Feb 2011 11:46:59 -0500

On Mon, Feb 28, 2011 at 11:13, Christopher D Haakinson
<cdhaakin_at_us.ibm.com> wrote:
>
> I mean that I have a working copy of my project under:
> /svn/hooks
>
> This folder gets automatically updated with svn update on every commit with a post-commit hook
> This folder also is "live", meaning that the files here are in use at all times, so nobody will be using this "working copy" as their development copy, it's just there to receive all the newest changes.

If you're getting conflicts in those files when performing an update,
then someone *is* using that working copy. Otherwise, the changes
would be merged without conflict into that working copy.

> The scenario I want to test and know how to handle is when a file in /svn/hooks gets changed outside of svn and these changes never get commited into svn.
>
> I understand what svn is and is not, but the files I will have inside svn will also be available and writable on a network, so I need to know how to handle files that get changed inside my live working folder outside of svn.

Again, "outside/inside svn" has no meaning (or ambiguous meaning) in
this context - please try to find the correct terminology to use here
to remove this ambiguity. It sounds like your workflow is supposed to
be:

1) Hook developer checks out hook scripts from repository to a local WC
2) Make edits
3) Commit changes to hook script
4) Hook scripts are auto-updated in /svn/hooks via a hook.

Result: Nothing should be in /svn/hooks that isn't in the repository.

What appears to be happening is that someone is editing in /svn/hooks
while at the same time someone else (or maybe the same person) is
editing in their own WC. This can generate a conflict when those
changes are committed from one WC and updated into the other.

Solution: lock people out of making changes to /svn/hooks, except via
that hook script that pulls the updates down. You should not get any
conflicts this way.

Alternate solution: Require people to only make changes in /svn/hooks,
and disallow commits from any other location (which would not be easy,
as the hook script does not know where on the client content is being
committed from - you'd have to do some per-user permissions & only
allowed a specific person/group to commit, and trust them to do the
right thing).

> Also is there a way to change what gets written to a file when this occurs? All my scripts get corrupted because of the >>>>>>> and I'd like to at least put a # in front so that it's a commented line and doesn't affect the execution...

No, part of the point of doing this is to make it *very* obvious that
something needs to be fixed. Even if those lines were commented out,
the content between them would likely break your script, or at least
cause unpredictable/undesired behavior.

> Andy Levy ---02/28/2011 11:02:11 AM---On Mon, Feb 28, 2011 at 10:54, Christopher D Haakinson
>
>
> From:
> Andy Levy <andy.levy_at_gmail.com>
> To:
> Christopher D Haakinson/Raleigh/IBM_at_IBMUS
> Cc:
> users_at_subversion.apache.org
> Date:
> 02/28/2011 11:02 AM
> Subject:
> Re: Help with files changed outside of svn
> ________________________________
>
>
> On Mon, Feb 28, 2011 at 10:54, Christopher D Haakinson
> <cdhaakin_at_us.ibm.com> wrote:
> > I'm fairly new to svn, and I have things set up and running well.
> >
> > I wanted to test out a scenario where a file controlled by svn gets changed
> > outside of svn inside the working copy, and now I'm lost and can't find much
> > help on what to do.
> >
> > Here's my example: I setup the hooks folder as a svn project. Checked it out
> > onto my windows box and made a small change, then committed the changes.
> > Now I went through my command shell and manually changed a file outside of
> > svn.
> > Then I went back to my windows box and editted the same file with a
> > different change.
>
> Do you mean to say that you edited the same file in multiple working
> copes? There is no "outside" svn as svn isn't a program in which you
> edit files, and you can't edit directly in the repository.
>
> > Now the original file contains: ">>>>>>> .r3" at the bottom
> >
> > Also I have some more files inside my working directory too:
> >
> > pre-revprop-change.tmpl
> > pre-revprop-change.tmpl.mine
> > pre-revprop-change.tmpl.r2
> > pre-revprop-change.tmpl.r3
> >
> >
> > Can someone please explain to me:
> >
> > 1) Why does >>>>>>> get put into the bottom of my files?
> > 2) What are the 3 copies of this file for?
>
> You have generated a merge conflict - you've changed the same line(s)
> of the file in 2 different ways.
>
> > 3) And now how do I get these files merged back into one copy with the
> > changes made inside svn included and the changes made outside svn excluded?
>
> You must now resolve the conflicts. See
> http://svnbook.red-bean.com/nightly/en/svn.tour.cycle.html#svn.tour.cycle.resolve
>
> As I said above, there is no "outside vs. inside svn" - you apparently
> have changes made from 2 different working copies. This is a normal
> situation but Subversion cannot handle this for you automatically -
> YOU must tell Subversion which content is correct.
>
>
Received on 2011-02-28 17:48:13 CET

This is an archived mail posted to the Subversion Users mailing list.