Re: restrict copy from to
From: Russell E Glaue <rglaue_at_cait.org>
Date: 2007-05-09 17:03:27 CEST
I discovered the answer to my own question
svnlook changed --copy-info -t <transaction> <repos>
--copy-info : show details for copies
So I wrote a pre-commit hook to output this information for a transaction in
==============================
-- A + live/banana/tags/1.00.000/ (from trunk/banana/:r97) A + live/banana/tags/1.01.000/ (from live/banana/staged/:r97) -- So --copy-info tell me where it was copied from while I am still in the transaction, and before the actual commit. So now I just write very something simple to enforce, if content is added to live_tag_location, and copy_from_location is not an allowed source_location, then do not allow the commit. -RG Russell E Glaue wrote: > Okay, let be a little more descriptive. > > Let's say I create a branch called 'mirrored' with two subbranches > 'staged' and 'live'. > This is in addition to the 'trunk'. > So I have this: > > /trunk/ > -------RealContent > -------file1.txt > /mirrored/ > ----------staged/RealContent > ----------live/ver-1/RealContent > ----------live/ver-2/RealContent > ----------live/ver-3/RealContent > > Now I am going to mirror the branch 'mirrored' to a svn repos on another > server. > And I am going to deploy a 'ver-N' tag in the subbranch 'live' from that > remote svn repos using 'svn switch' command. > '/mirrored/live/ver-N' are tags of various versions of '/mirrored/staged' > > Now everyone knows that 'svn switch' will not work unless there is a > common ancestry. > So, since I am mirroring only '/mirrored/' branch to the remote server, > in order to perform 'svn switch' with say '/mirrored/live/ver-1' to > '/mirrored/live/ver-2' the common ancestry must be from within > '/mirrored/'. > I have chosen the common ancestry to be '/mirrored/staged' which gets > tagged out to an appropriate ver-N tag in '/mirrored/live'. > > This means 'svn switch' will NOT work if the content of > '/mirrored/live/ver-N' has an immediate ancestry in '/trunk/'. > > Therefore, I want to restrict any 'svn copy' commands to > '/mirrored/live' to only allow a copy from '/mirrored/staged' > > This would force developers to copy/merge/import changes to > '/mirrored/staged' in order to tag it out to '/mirrored/live/ver-N' > > > I know svn history can be used to find ancestry of a file or directory > which you can compare to discover a COPY. > However, since I want to deny the COPY command to be successful if the > ancestry is not from an approved location, I need to know the ancestry > of a file as it is found in the transaction. > > What tool command will tell me this? > > looking at the transaction, I could see that the following might be > occurring: > A /mirrored/live/ver-5/file1.txt > But it does not tell me if that file1.txt is new, copied from > /mirrored/staged, or copied from /trunk/. > > What tool command can I use to tell me (or help me find out) that this > file is being copied from '/mirrored/staged' and not some other > location? I want to do this during the transaction, then allow or deny > the commit based on this. > > -RG > > > > Russell E Glaue wrote: >> Has anyone tried this before? >> >> Say I have a svn repos with a branch and trunk like this >> >> /repos/ >> -------trunk/calc1/lib/eng1/af >> -------trunk/calc1/lib/eng1/zz >> -------branches/calc1-lib-eng-af >> -------branches/calc1-lib-eng-zz >> >> And I want to restrict any "copy" from "branches/calc1-lib-eng-af" to >> "trunk/calc1/lib/eng1/af" only. >> >> So a committer who has commit access to all of branches and trunk >> would not be able to perform this funtion: >> >> svn copy branches/calc1-lib-eng-zz/file1.txt >> trunk/calc1/lib/eng1/af/file1.txt >> >> This is a hypothetical scenerio. >> >> >> What can I use to discover the copy history in a transaction? >> svnlook? >> How can this show me it is a copy from an allowed or not allowed source? >> >> -RG >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org >> For additional commands, e-mail: users-help@subversion.tigris.org >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org > For additional commands, e-mail: users-help@subversion.tigris.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org For additional commands, e-mail: users-help@subversion.tigris.orgReceived on Wed May 9 17:03:55 2007 |
This is an archived mail posted to the Subversion Users mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.