You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by Apache Wiki <wi...@apache.org> on 2005/11/15 18:57:58 UTC

[Struts Wiki] Update of "StrutsMaintenanceSvn" by James Mitchell

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Struts Wiki" for change notification.

The following page has been changed by James Mitchell:
http://wiki.apache.org/struts/StrutsMaintenanceSvn

The comment on the change is:
Adding a few release specific svn usage tips

------------------------------------------------------------------------------
  
  ==== Updating the list of subprojects for the "current" checkout ====
  
+ The Struts code base takes advantage of a feature of Subversion termed "externals".  The concept is similar to how a symbolic link works in the *nix worlds.  With Struts, you typically checkout the source code by getting https://svn.apache.org/repos/asf/struts/current/, yet, if you look at this url with a browser, you'll only see 1 file.  That's because of our use of svn:externals.
-  * export set SVN_EDITOR=vi  (or emacs or whatever)
-  * cd (to where the root of your checkout is)
-    * the "." is not a typo - that's how you tell it to edit the svn:external props
-    * it's basically a config file
-  * if you do "svn commit", (without specifying a commit message), you'll get the same forced vi display
-    * not sure if cvs does the same
-  * it's all in the online svn handbook -http://svnbook.red-bean.com/svnbook-1.1/
  
+   (All of this is in the online svn handbook -http://svnbook.red-bean.com/svnbook-1.1/)
+ 
+ Change directories to where the root of your checkout is.
+ {{{
+  $ cd path/to/svn/struts/checkout
+ }}}
+ 
+ Ensure you have an environment variable setup for SVN_EDITOR.
+ {{{
+  $ set
+ ...
+ ... (snip'd)
+ ...
+ SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
+ SHLVL=1
+ SVN_EDITOR=vi         <=== must have this (or emacs or vim or ??)
+ TERM=xterm-color
+ TERM_PROGRAM=Apple_Terminal
+ ...
+ ...
+ }}}
+ 
+ If you don't have it, set it.
+ {{{
+  $ export set SVN_EDITOR=vi  (or emacs or vim or whatever)
+ }}}
+ 
+ 
+ Now let's edit svn:externals for the root of our checkout.
+ {{{
+  $ svn propedit svn:externals .
+ }}}
+ 
+ __NOTE__ - the "." is not a typo - that's how you tell it to edit the svn:external props
+ 
+ (if using vi, it will open up like this)
+ 
+ {{{
+ apps     https://svn.apache.org/repos/asf/struts/apps/trunk
+ bsf      https://svn.apache.org/repos/asf/struts/bsf/trunk
+ build    https://svn.apache.org/repos/asf/struts/build/trunk
+ core     https://svn.apache.org/repos/asf/struts/core/trunk
+ el       https://svn.apache.org/repos/asf/struts/el/trunk
+ faces    https://svn.apache.org/repos/asf/struts/faces/trunk
+ flow     https://svn.apache.org/repos/asf/struts/flow/trunk
+ extras   https://svn.apache.org/repos/asf/struts/extras/trunk
+ sandbox  https://svn.apache.org/repos/asf/struts/sandbox/trunk
+ site     https://svn.apache.org/repos/asf/struts/site/trunk
+ shale    https://svn.apache.org/repos/asf/struts/shale/trunk
+ taglib   https://svn.apache.org/repos/asf/struts/taglib/trunk
+ tiles    https://svn.apache.org/repos/asf/struts/tiles/trunk
+ ~
+ ~
+ ~
+ 
+ }}}
+ 
+ Make your changes, save and exit.
+ 
+ You can check what you've done
+ {{{
+  $ svn diff .
+ }}}
+ 
+ Check in your changes
+ {{{
+  $ svn commit -m "modified svn:externals for ???" .
+ }}}
+ 
+ 
+ ==== Updating svn:externals after tagging a release or branching ====
+ 
+ This is where you will change/point it to the tagged/branched versions.
+ 
+ Similar to the above steps, however, you have to checkout and update the tagged/branched versions.  Don't worry, you won't have to sit through a bunch of checkouts that eat up your hard disk.  We'll use a svn switch to limit recursion of the checkouts.
+ 
+ Do the steps above for setting up the SVN_EDITOR environment variable.
+ 
+ {{{
+ 
+ > cd path/to/svn/struts/checkout/
+ > ll
+ total 23424
+ drwxr-xr-x   23 jmitchel  jmitchel       782 Nov  2 11:17 apps
+ drwxr-xr-x   13 jmitchel  jmitchel       442 Nov  1 22:39 bsf
+ drwxr-xr-x   21 jmitchel  jmitchel       714 Nov 14 11:48 build
+ drwxr-xr-x   22 jmitchel  jmitchel       748 Nov 14 12:02 core
+ drwxr-xr-x   15 jmitchel  jmitchel       510 Nov 14 11:49 el
+ drwxr-xr-x    9 jmitchel  jmitchel       306 Nov 14 11:49 extras
+ drwxr-xr-x   19 jmitchel  jmitchel       646 Nov  1 22:39 faces
+ drwxr-xr-x   13 jmitchel  jmitchel       442 Nov 14 11:49 flow
+ -rw-r--r--    1 jmitchel  jmitchel      1166 Sep 25 20:04 nightly.sh
+ drwxr-xr-x    8 jmitchel  jmitchel       272 Nov  1 22:40 plugins
+ drwxr-xr-x   23 jmitchel  jmitchel       782 Nov 14 11:49 sandbox
+ drwxr-xr-x   19 jmitchel  jmitchel       646 Nov  3 08:10 shale
+ drwxr-xr-x   10 jmitchel  jmitchel       340 Nov  1 22:40 site
+ drwxr-xr-x   23 jmitchel  jmitchel       782 Nov 14 11:50 taglib
+ drwxr-xr-x   11 jmitchel  jmitchel       374 Nov 14 11:50 tiles
+ 
+ }}}
+ 
+ __IMPORTANT__ - for each subproject that is being tagged/released, do the following:
+ 
+ (I suppose if we do this enough, this could made into a script, the below is an example for 'core')
+ 
+ {{{
+  $ svn copy https://svn.apache.org/repos/asf/struts/core/trunk \
+            https://svn.apache.org/repos/asf/struts/core/tags/STRUTS_CORE_1_3_0 \
+       -m "Tagging the 1.3.0 release."
+ 
+ }}}
+ 
+ Ok, now that we've tagged it, we have to checkout this tag to modify the svn:externals
+ 
+ {{{
+  $ mkdir tmp-struts
+  $ cd tmp-struts
+  $ svn co -N https://svn.apache.org/repos/asf/struts/core/tags/STRUTS_CORE_1_3_0 struts-core-1.3.0-branch
+ }}}
+ 
+   (*note the "-N" switch above forces svn not to recurse, 
+    you don't want everything if you are simply going to fix svn:externals)
+ 
+ {{{
+  $ cd struts-core-1.3.0-branch
+  $ svn propedit svn:externals .   <-- don't forget the "."
+ }}}
+ 
+ (vi will open up like this)
+ 
+ {{{
+ apps     https://svn.apache.org/repos/asf/struts/apps/trunk
+ bsf      https://svn.apache.org/repos/asf/struts/bsf/trunk
+ build    https://svn.apache.org/repos/asf/struts/build/trunk
+ core     https://svn.apache.org/repos/asf/struts/core/trunk
+ el       https://svn.apache.org/repos/asf/struts/el/trunk
+ faces    https://svn.apache.org/repos/asf/struts/faces/trunk
+ flow     https://svn.apache.org/repos/asf/struts/flow/trunk
+ extras   https://svn.apache.org/repos/asf/struts/extras/trunk
+ sandbox  https://svn.apache.org/repos/asf/struts/sandbox/trunk
+ site     https://svn.apache.org/repos/asf/struts/site/trunk
+ shale    https://svn.apache.org/repos/asf/struts/shale/trunk
+ taglib   https://svn.apache.org/repos/asf/struts/taglib/trunk
+ tiles    https://svn.apache.org/repos/asf/struts/tiles/trunk
+ ~
+ ~
+ ~
+ }}}
+ 
+ 
+ Change these to point to the tagged/branched versions.  Doing 'svn diff .' would look something like this:
+ 
+ {{{
+ - core     https://svn.apache.org/repos/asf/struts/core/trunk
+ + core     https://svn.apache.org/repos/asf/struts/core/tags/STRUTS_CORE_1_3_0
+ }}}
+ 
+ Check it in (again, don't forget the "." at the end)
+ {{{
+  $ svn commit -m "Change svn:externals to point to tags/STRUTS_CORE_1_3_0" .
+ }}}
+ 
+ WAIT!  We're not done yet, we need to do the above for each project that uses a shared svn:externals build/.
+ 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org