Done. I hope someone gives it a try. I just ran it this morning, and it detected the following changes (since last night) and merged then into my local trunk:
# cd /opt/ofbiz.svn/bin # ./svn_local.sh [update output] ...... Updating opt.ofbiz.trunk Merging Revisions: Last:1082417 Current:1082582 --- Merging differences between repository URLs into 'opt.ofbiz.trunk': U opt.ofbiz.trunk/themes/tomahawk/webapp/tomahawk/css/help.css U opt.ofbiz.trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java U opt.ofbiz.trunk/applications/accounting/data/AccountingTypeData.xml U opt.ofbiz.trunk/framework/sql/src/org/ofbiz/sql/Planner.java Commiting Local Merged Revisions: Last:1082417 Current:1082582 Sending . Sending applications/accounting/data/AccountingTypeData.xml Sending applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java Sending framework/sql/src/org/ofbiz/sql/Planner.java Sending themes/tomahawk/webapp/tomahawk/css/help.css Transmitting file data .... Committed revision 338. Easy..... On Thu, Mar 17, 2011 at 12:46 AM, Jacques Le Roux <j...@les7arts.com> wrote: > Hi Mike, > > I did not verify anything, but could you please post your message as a > comment in > https://cwiki.apache.org/confluence/display/OFBIZ/SVN+Tips+-+svn_load_dirs+Vendor+Branch > You can also put your attachment there > > Thanks > > Jacques > ----- Original Message ----- > From: Mike > To: user@ofbiz.apache.org > Sent: Thursday, March 17, 2011 8:19 AM > Subject: How to setup a simple ofbiz vendor branch > > > ---------------------------------- > SETUP A SIMPLE OFBIZ VENDOR BRANCH > ---------------------------------- > > > I went through the pain of setting up a "vendor branch" of ofbiz, so I > thought I'd share it with the community. The supplied instructions in the > wiki seemed confusing, and didn't go into detail. Since I'm into automation, > my script (svn_local.sh) allows the following: > > > Keep a local copy of ofbiz (trunk|0904|1004), allow it to be modified, but > at the same time have the ability to receive upstream updates from the Apache > Ofbiz SVN server, and merge them into your own local copy. For the most > part, this works automatically. > > > The attached ofbiz_vendor_branch.tar.gz has the script. > > > To clarify, I'm not a subversion expert, so my setup is ultra simple, > anonymous read/write, no password, etc. My svn server is safely behind a > firewall, so I'm not worried about multi users, passwords, hackers, etc. > This works for me because I'm a one man show. Your requirements are probably > different. > > > To get started, we need to keep local copies of the following: > > > http://svn.apache.org/repos/asf/ofbiz/trunk --or-- > http://svn.apache.org/repos/asf/ofbiz/branches/release09.04 --or-- > http://svn.apache.org/repos/asf/ofbiz/branches/release10.04 --or-- all > three! > > > These are always kept up to date via "svn update", and are kept in > /opt/ofbiz.svn. > > > The script (svn_local.sh) allows all three (or more in the future) branches > to be tracked. For me, the best branch for deployment is trunk, because it > seems to be the most stable, and gets more attention from the developers. > For the purpose of this setup, I'm just going focus on trunk, but tracking > 0904 or 1004 (or all three) is as easy as tweaking a variable (in > svn_local.sh). > > > The Apache and Local versions are kept in /opt/ofbiz.svn, and are named: > > > /opt/ofbiz.svn/asf.ofbiz.0904 > /opt/ofbiz.svn/asf.ofbiz.1004 > /opt/ofbiz.svn/asf.ofbiz.trunk > > > The "local" copies are called. > /opt/ofbiz.svn/opt.ofbiz.0904 > /opt/ofbiz.svn/opt.ofbiz.1004 > /opt/ofbiz.svn/opt.ofbiz.trunk > > > NOTE: Regarding this path (/opt/ofbiz.svn). For simplicity, use the same > path (at least initially). The script resides in the "/opt/ofbiz.svn/bin" > directory, and will always place the above checked out directories one level > above the script (in /opt/ofbiz.svn). > > > Also, this script runs on an Ubuntu host, I've never tried to run this on > windows. However, It might work under cygwin. > > > Internally (within the local SVN repository), the directories are organized > like this: > > > ofbiz/ > ofbiz/asf/ > ofbiz/asf/ofbiz.1004 > ofbiz/asf/ofbiz.trunk > ofbiz/opt/ > ofbiz/opt/ofbiz.1004 > ofbiz/opt/ofbiz.trunk > > > NOTE: If you already have an SVN repository, then I'd fully analyze/test > this process (on a separate machine) to see if it "fits" into your local SVN > repository w/o clobbering your own stuff. If you have "ofbiz" at the top of > your SVN tree (like above), then there may be issues. You have been warned! > > > These directories are strictly used to track changes to the local > repositories. Your actual names (when you check out a working copy) could be > different. In my case, when I check out the working local copy, I place it > in /opt/ofbiz.[version], and this is where I actually fire up ofbiz from > (later). > > > You could tweak these names, but this will require hacking the script, and > it is not recommended, at least until you understand how it works. > > > The attached tar file contains the following items: > > > # tar ztvf ofbiz_vendor_branch.tar.gz > drwxr-xr-x root/root 0 2011-03-16 10:38 opt/ofbiz.svn/bin/ > -rwxr-xr-x root/root 6478 2011-03-16 09:36 > opt/ofbiz.svn/bin/svn_local.sh > -rw-r--r-- root/root 9630 2009-05-12 10:25 > opt/ofbiz.svn/bin/svn_load_dirs.README > -rw-r--r-- root/root 7201 2011-03-16 10:12 opt/ofbiz.svn/bin/config > -rw-r--r-- root/root 7201 2011-03-16 10:12 opt/ofbiz.svn/bin/README > -rwxr-xr-x root/root 67335 2010-08-27 18:50 > opt/ofbiz.svn/bin/svn_load_dirs.pl > -rwxr-xr-x root/root 436 2010-09-06 11:36 opt/ofbiz.svn/bin/svnserv > # > > > Here are the contents: > -------------------------------------------------------------- > /opt/ofbiz.svn/bin/svnserv (used to fire up the SVN daemon) > /opt/ofbiz.svn/bin/svn_load_dirs.pl (NOT written by me) > /opt/ofbiz.svn/bin/svn_local.sh (MY script, that automates all) > /opt/ofbiz.svn/bin/config (SVN client config file, discussed later) > /opt/ofbiz.svn/bin/README (These docs) > -------------------------------------------------------------- > > > NOTE: The svn_load_dirs.pl (part of Apache) is a perl script which magically > merges the various repositories. This one works for me, so I provided it. > It DOES require various perl modules that must be satisfied so it properly > works. > > > To get started, you will need your own SVN repository. Here are the steps. > > > -------------------------------------------------------------- > STEP 1) Create your own local SVN repository > -------------------------------------------------------------- > # mkdir -p /var/svn/repos > # svnadmin create /var/svn/repos > > > I suggest you use /var/svn/repos, it will make it easier, and my script uses > it (later). > > > -------------------------------------------------------------- > STEP 2) Tweak SVN for anonymous read-write > -------------------------------------------------------------- > # vi /var/svn/repos/conf/svnserv.conf > > > [general] > anon-access = write > auth-access = write > password-db = passwd > > > Copy /opt/ofbiz.svn/bin/svnserv into /etc/init.d (unless you don't already > have one), and fire up the svnserv init script. You may have to tweak it > (works for Ubuntu). > > > # cp /opt/ofbiz.svn/bin/svnserv /etc/init.d > # /etc/init.d/svnserv start > > > Make sure it's running. > > > /# ps -efww|grep svn > root 6436 1 0 18:47 ? 00:00:00 svnserve -d -r /var/svn/repos > > > -------------------------------------------------------------- > STEP 3) Copy the client config to the proper location. > -------------------------------------------------------------- > NOTE: The svn client config needs to be copied to the home directory of the > user who runs the svn command. In this case, probably > /root/.subversion/config --or-- place it in (again Ubuntu) > /etc/subversion/config, which would make it available to all users on that > machine. Also, if you plan on running ofbiz on a different machine, then you > need to make sure this 'config' file is on all machines. so: > > > # cp /opt/ofbiz.svn/bin/config /root/.subversion/config --or-- > # cp /opt/ofbiz.svn/bin/config /etc/subversion/config > > > -------------------------------------------------------------- > STEP 4) Create a "svn" DNS entry for your local domain (optional) > -------------------------------------------------------------- > If you have your own local area network and your own DNS server, it is good > practice to create a "svn" host, which is an alias to the host where the > local SVN repository exists. For instance, if your local domain is > "internal.net", create "svn.internal.net", which points to the real host. > > > -------------------------------------------------------------- > STEP 5) Untar the attached tar file from the root directory > -------------------------------------------------------------- > # cd / > # tar zxvf /root/download/ofbiz_vendor_branch.tar.gz > > > -------------------------------------------------------------- > STEP 6) Configure the script (choose trunk/branches) > -------------------------------------------------------------- > # cd /opt/ofbiz.svn/bin > # vi svn_local.sh > > > Set the variables ofbiz_versions and local_svnserv. > > > Variable: ofbiz_versions > > > All three Ofbiz versions (NOT recommended) > ofbiz_versions="trunk:trunk branches/release10.04:1004 > branches/release09.04:0904" > > > Trunk+1004 (also not really recommended) > ofbiz_versions="trunk:trunk branches/release10.04:1004" > > > Just Trunk: > ofbiz_versions="trunk:trunk" > > > Just 1004: > ofbiz_versions="branches/release10.04:1004" > > > The item on the right side of the colon will be used to create the name of > the directory entry. For instance, you check out the branch > "branches/release10.04" and it create a directory called "opt.ofbiz.1004". > > > If you choose to track multiple branches (not recommended), then your local > SVN server will get pretty fat (and slow). Beware. > > > Variable: local_svnserv > > > local_svnserv="svn://svn.internal.net" > #local_svnserv="svn://svn" > #local_svnserv="file:///var/svn/repos" > > > Choose the way you want to access you own local repository. If you followed > the above directions, then you already have the svnserv daemon running. The > first one is using the DNS name (so is the second, but there is an > /etc/resolv.conf that has "search internal.net" defined). This is really the > recommended way of accessing a local SVN server. You can then check out the > code from ANY machine on your local area network. If you are running on just > a single machine, then you COULD use the "file:///..." method, which is fast > (and least flexible). > > > -------------------------------------------------------------- > STEP 7) Run the svn_load_dirs.pl utility to make sure it works > -------------------------------------------------------------- > # cd /opt/ofbiz.svn/bin > # ./svn_load_dirs.pl > > > Look for any perl modules missing, and satisfy the requirements. You should > get the help syntax of the script. > > > On Ubuntu, you can do a bunch of "apt-get install ITEM" to satisfy the perl > module, or you could use the CPAN method, which consists of a bunch of: > > > perl -MCPAN -e "install Digest::MD5" > > > Statements until the script is happy. Don't attempt STEP 8 until > svn_load_dirs.pl is happy. > > > ALSO: Check svn_load_dirs.pl and verify line 32: > > > my $svn = '/usr/bin/svn'; > > > Points to the correct svn binary (above is Ubuntu). > > > # vi svn_load_dirs.pl > > > -------------------------------------------------------------- > STEP 8) Run svn_local.sh in "init" mode > -------------------------------------------------------------- > NOTE: Don't forget STEP 3 (svn client "config") or you'll have problems > with the next step. > > > # cd /opt/ofbiz.svn/bin > # ./svn_local.sh init > [lots of output] > > > NOTE: This is only done ONCE (with "init"), to initially populate the > repository. > > > The script is in debug mode (during init) in case any problems occur. > > > -------------------------------------------------------------- > STEP 9) Checkout the "local" (running) branch of the ofbiz repository you > want > -------------------------------------------------------------- > Decide where you want to run ofbiz. /opt always works for me. > > > # trunk example > # cd /opt > # svn co svn://SVN_SERVER/ofbiz/opt/ofbiz.trunk/trunk/ ofbiz.trunk --or-- > # svn co file:///var/svn/repos/ofbiz/opt/ofbiz.trunk/trunk/ ofbiz.trunk > > > NOTE: The right argument is the directory that will be created. You can > name it > anything you want. I recommend ofbiz.[trunk|branch] to match SVN. > > > # 10.04 example > # cd /opt > # svn co svn://SVN_SERVER/ofbiz/opt/ofbiz.1004/trunk/ ofbiz.1004 --or-- > # svn co file:///var/svn/repos/ofbiz/opt/ofbiz.1004/trunk/ ofbiz.1004 > .... > A ofbiz.trunk/ivy.xml > A ofbiz.trunk/startofbizBoth.bat > A ofbiz.trunk/KEYS > A ofbiz.trunk/rc.ofbiz > A ofbiz.trunk/startofbizPos.bat > Checked out revision 11. > # > > > Notice that even for 1004, you still checkout the "trunk" of the local 1004 > repository > > > -------------------------------------------------------------- > STEP 10) Check things out, test, etc. > -------------------------------------------------------------- > Change directory, and run "svn info" You should see a low revision #, like > 11. > > > # cd /opt/ofbiz.trunk; svn info; svn log > > > The "Last Changed Rev:" is probably r11. The log should show "Initial > import...." > > > -------------------------------------------------------------- > STEP 11) Change something, commit changes to your local repository > -------------------------------------------------------------- > # cd /opt/ofbiz.trunk/hot-deploy > # mkdir newapp > # svn add newapp > A newapp > # svn commit > -------------------------------------------------------------- > This is a newapp in hot-deploy > --This line, and those below, will be ignored-- > > > A hot-deploy/newapp > -------------------------------------------------------------- > Adding hot-deploy/newapp > > > Committed revision 12. > > > -------------------------------------------------------------- > STEP 12) Run updates from Apache OFBIZ, and "merge" changes into your local > repo. > -------------------------------------------------------------- > Sometime later, after the developers tweaked something in trunk, run the > following: > > > # cd /opt/ofbiz.svn/bin > # ./svn_local.sh > > > If nothing changed, then you'll see: > -------------------------------------------------------------- > NOTE: FOUND svn_load_dirs.pl in [/opt/ofbiz.svn/bin/svn_load_dirs.pl] > Remote ASF: http://svn.apache.org/repos/asf/ofbiz/trunk > Local ASF: svn://svn/ofbiz/asf/ofbiz.trunk > Local OFB: svn://svn/ofbiz/opt/ofbiz.trunk > > > http://svn.apache.org/repos/asf/ofbiz/trunk Revision: 1082281 > Last Changed Revisions: Last:1082281 Current:1082281 > Repository revisions match > # > -------------------------------------------------------------- > Otherwise, you'll lots of magical output that hopefully ends up with your > local svn repository opt.ofbiz.[trunk|branch] updated with fresh > patches/changes from Ofbiz being merged into your own changes being made > locally. > > > This works automatically for the most part, but on occasion you may have a > collision when you might have to accept/reject a merge option. > > > The script also creates directories like this: > > > /opt/ofbiz.svn/asf.ofbiz.trunk.1079456 > /opt/ofbiz.svn/asf.ofbiz.trunk.1080107 > /opt/ofbiz.svn/asf.ofbiz.trunk.1080776 > /opt/ofbiz.svn/asf.ofbiz.trunk.1081185 > > > Which are checked out versions of trunk. These can be blown away if you > like, but I like them because I can do stuff like "diffing" between revisions: > > > diff -r asf.ofbiz.trunk.1081444 asf.ofbiz.trunk.1081740 > > > -------------------------------------------------------------- > STEP 13) Update your local (running) copy of ofbiz with the latest changes. > -------------------------------------------------------------- > Suppose you (like me) run the "running" version of ofbiz in > /opt/ofbiz.trunk, which you checked out in STEP 9. > > > You run the update/merge process: > > > # cd /opt/ofbiz.svn/bin > # ./svn_local.sh > [lots of output] > > > Even though you did the above steps, the copy you are running in > /opt/ofbiz.trunk is STILL running the old code. You must also update your > running (checked out) code, like this: > > > # cd /opt/ofbiz.trunk > # svn update > ....... update statements ............ > > > /etc/init.d/ofbiz.trunk restart ... etc.. > > > Thats it. If you have problems initially creating the repository, make sure > you followed STEP #3. You can always blow away the /var/svn/repos, and > re-init. > > > If any errors show up, you can always un-comment line #6 "set -x" to show > the debug steps. > > > If you already have a modified ofbiz directory that you want to merge into > this process, then that will be tricky, and a lot more work. However, you > could probably do it like this: > > > Run the above procedure, checking out a new code branch (like in STEP 9). > You then need to detect the changes between your existing, running code and > copy each modified (or missing) file/directory (i.e., one by one into the > checked out directory (/opt/ofbiz.trunk). Then, just: > > > # cd /opt/ofbiz.trunk > # svn commit > > > I hope this helps someone. Good luck!! > >