TWiki
>
Persistency Web
>
ObsoleteTopics
>
OLDPersistencyCvs2Svn
(2016-04-09,
AndreaValassi
)
(raw view)
E
dit
A
ttach
P
DF
<!-- * Set CORALSVNLOG = [[https://svnweb.cern.ch/cern/wsvn/lcgcoral/?op=revision&rev=%DEFAULT%&peg=%DEFAULT%][lcgcoral:%DEFAULT%]] * Set COOLSVNLOG = [[https://svnweb.cern.ch/cern/wsvn/lcgcool/?op=revision&rev=%DEFAULT%&peg=%DEFAULT%][lcgcool:%DEFAULT%]] --> %RED% *This page is under construction.* %ENDCOLOR% ---+ CORAL and COOL repository migration from CVS to SVN This page describes some of the issues encountered during the CVS to SVN migration of CORAL and COOL, and how they were solved (giving many more details than savannah [[https://savannah.cern.ch/task/?10423][task #10423]]). Note that POOL was not and will not be migrated to SVN. The two CVS repositories for CORAL and COOL have been separately migrated to two SVN (subversion) repositories, hosted by the [[http://svn.web.cern.ch/svn][CERN Central SVN Service]]. The migration was performed using cvs2svn, following the guidelines presented in the [[https://information-technology.web.cern.ch/book/how-start-working-svn/administering-svn-repository#adm-cvs2svn][CERN Central SVN Service HOWTO]]. In this process we tried to stick to the usage and conventions adopted by the LHC experiments in their migration from CVS to SVN. The following links have been useful. * [[https://twiki.cern.ch/twiki/bin/view/Atlas/AtlasSVNMigration][ATLAS SVN migration]] and [[https://twiki.cern.ch/twiki/bin/viewauth/Atlas/SoftwareDevelopmentWorkBookSVN][SVN in ATLAS]] * [[https://twiki.cern.ch/twiki/bin/view/LHCb/SVNUsageGuidelines][Using SVN in LHCb]] The issues and solutions described below were initially tested using the cvs2svn "sandbox" at CERN and browser access to the corresponding [[http://svnweb.cern.ch/cvs2svn/wsvn][Sandbox !WebSVN]] portal. Due to the observation of some issues (e.g. in the display of binary PPT/JPG files), most of the tests were also repeated using the production !WebSVN portal and TRAC, as well as using command line tools such =svn co= and =wget= in some cases. Now that the migration has been completed, the CORAL and COOL repositories can be browsed using using the production !WebSVN and TRAC portals at the following links: * CORAL [[http://svnweb.cern.ch/world/wsvn/lcgcoral][WebSVN]] and [[https://svnweb.cern.ch/trac/lcgcoral/browser][TRAC]] * COOL [[http://svnweb.cern.ch/world/wsvn/lcgcool][WebSVN]] and [[https://svnweb.cern.ch/trac/lcgcool/browser][TRAC]] ---++ Migration tools The migration was executed on an SLC6 node (slc6pf01) using the then most recent trunk version [[http://cvs2svn.tigris.org/source/browse/cvs2svn/trunk/?pathrev=5429#dirlist][5429]] of cvs2svn. This was preferred to the latest stable SLC6 version [[http://swrepsrv.cern.ch/swrep/x86_64_slc6/cvs2svn-2.3.0-0.3.r4998svn.el6.noarch.rpm][4998]] as it implements a few new features that were initially thought to be useful for a better handling of symbols. A copy of the latest migration tools and of all relevant input and data files have been copied to AFS on /afs/cern.ch/user/l/libcoral/cvs2svn, where they will be kept permanently. The tools have also been committed to SVN in the [[https://svnweb.cern.ch/trac/lcgcool/browser/contrib/trunk/Cvs2Svn][Cvs2Svn]] contrib area of COOL. ---++ Handling of symbols (tags and branches) during the cvs2svn migration ---++++ Symbols (tags and branches): release vs development instances ---++++ Symbols (tags and branches): project-level vs package-level granularity Advantages of package-level-granularity: Disadvantages of package-level-granularity: * The 'prune' option was used in the cvs2svn migration to delete a directory once the last file has been deleted from it, but this has no effect on whole packages that are migrated as individual 'projects'. Obsolete packages that contain no files after a given revision (e.g. coral/AccessPlugin or coral/Tests/UnitTests) are not automatically 'pruned' from the SVN repository and need to be manually deleted after the cvs2svn migration. Luckily, this concerns only the trunk of such packages, hence this cleanup is not too complex. ---++++ Symbols (tags and branches): partial tags/branches lead to broken links in !WebSVN As an example, a wrong tag Coral-preview (correct tag is CORAL-preview) was applied to a single header file in !CoralBase. In cvs2svn this is handled as if the tag had been applied to the whole directory !CoralBase and had then been removed from all files but the tagged one. This is what is shown by !WebSVN and TRAC: * !WebSVN: https://svnweb.cern.ch/cern/wsvn/lcgcoral/?op=revision&rev=4706&peg=4706. Files and directories "deleted" from the tag are shown as being deleted from Coral-preview (which is correct, but leads to broken links displaying error messages, for instance because no [[https://svnweb.cern.ch/cern/wsvn/lcgcoral/coral/tags/dev/Coral-preview/CoralBase/CoralBase/Attribute.h/?rev=4705&peg=4705][Attribute.h]] was ever included in this tag). * TRAC: https://svnweb.cern.ch/trac/lcgcoral/changeset/4706. Files and directories "deleted" from the tag are shown as being deleted from trunk (which is wrong, but leads to valid links, for instance because [[https://svnweb.cern.ch/trac/lcgcoral/browser/coral/trunk/CoralBase/CoralBase/Attribute.h?rev=912][Attribute.h]] does exist in the trunk and was never deleted from it). After an extensive investigation of several cvs2svn features (including the "empty directories" option or the possible use of hints to "sprout" the "lods - see [[https://cern.service-now.com/service-portal/view-incident.do?n=INC317008][INC317008]]), it was eventually understood that this is essentially an issue in the cvs2svn migration algorithm (which tags/adds whole projects and removes/replaces individual files, rather than tagging/adding individual files), which is then reflected (in different ways) in the two source browsers. The possibility to change this in cvs2svn was considered, but this was eventually abandoned as it is too complex and error-prone while providing very limited benefits. Once the issue is understood, interpreting the information shown by both browsers is straight-forward. ---++ Handling of file properties during the cvs2svn migration Text and binary files were handled differently in the migration. We used file suffixes to differentiate between the two. ---++++ Text files (source code) These are the main conclusions from our analysis of the issues observed in the migration of text files containing source code in the CORAL CVS. 1 *The =svn:eol-style= property must be set to =native= for all text files.* * This is the recommended default for text files in SVN. We did not observe any issues related to this. 2 *The =svn:mime-type= property should preferably be left not set for all text files.* * For C++ source code files, if this property is not set, !WebSVN displays them inline with a nice syntax highlighting together with all SVN metadata. If =svn:mime-type= is set to =svn:mime-type text/plain=, !WebSVN displays these files on a page of their own without syntax highlighting or SVN metadata (see [[https://cern.service-now.com/service-portal/view-incident.do?n=INC317036][INC317036]]). If =svn:mime-type= is set to =application/x-cplusplus=, =svn:mime-type text/x-c++= or =svn:mime-type text/x-c=, !WebSVN offers instead to download the files or open them with an external program. * %RED% *TODO:* %ENDCOLOR% check on TRAC (add some test files to the real repository?). We did not repeat the tests above with TRAC, but the display is good if =svn:mime-type= is not set. ---++++ Binary files (images and MS Office files) These are the main conclusions from our analysis of the issues observed in the migration of binary files (JPG image, PPT presentations) in the COOL CVS. 1 *The =svn:eol-style= property must not be set for binary files*. * Preventing this property to be set must be explicitly configured in cvs2svn. By default, cvs2svn would set this to =native= and files would be handled as text files. * If binary files are inserted in SVN with =svn:eol-style native=, they can no longer be opened correctly after a checkout with =svn co=. Note that this is a feature of SVN itself, not an issue with !WebSVN or TRAC. For instance, in one migration test (where mime types were not defined and the ppt suffix had been forgotten from auto-props), ppt files were migrated with =svn:eol-style native=: when checked out with =svn co=, these files could not be opened with !PowerPoint. 2 *The =svn:mime-type= property should preferably be set to =application/octet-stream=.* * For PPT files, if this property is not set, !WebSVN displays the binary file inline as a text stream of binary characters. If =svn:mime-type= is set to =application/octet-stream= (or also =application/vnd.ms-powerpoint=), !WebSVN offers instead to download the files and/or open them with !PowerPoint. We did not see any clear advantage in using =application/vnd.ms-powerpoint= over =application/octet-stream=. TRAC always offers to download the files and/or open them with !PowerPoint whether =svn:mime-type= is set to =application/octet-stream= or is not set; it does however display the binary file inline as a text stream of binary characters if =svn:mime-type= is set to =text/plain=. * For JPG files, !WebSVN and TRAC display the image as a standalone web page whether this property is set to =application/octet-stream= or =image/jpeg= or is not set. We only saw potential issues if it is set to =text/plain= (TRAC and the buggy sandbox instance of !WebSVN display an inline stream of bytes as text, but the working production instance still shows the image even in that case). We did not see any clear advantage in using =image/jpeg= over =application/octet-stream=. 3 *The =svn:executable= property should preferably be set to =*=.* * This was not tested in detail, but this property seemed to be largely irrelevant. Since PPT and JPG files coming from Windows are generally seen as executables (and get this property set when added to the SVN repository from scratch), it seems safer to add this property everywhere for consistency. 4 *The 'sandbox' instance of !WebSVN seems affected by a bug that is absent in the 'production' instance.* * Neither PPT nor JPG files could be correctly opened or displayed when opened through the sandbox instance (https://svnweb.cern.ch/cvs2svn/wsvn), while they could be correctly opened and displayed when retrieved through the production instance (https://svnweb.cern.ch/cern/wsvn). This was reported in [[https://cern.service-now.com/service-portal/view-incident.do?n=INC324979][INC324979]]. * This is a problem with !WebSVN rather than with the cvs2svn migration settings or with the SVN properties of the files. We checked that PPT and JPG files can be opened and displayed if they are downloaded via =svn co=. We also checked that the SVN repository (the contents of the =db= directory) were strictly identical in a test where we added from scratch some PPT and JPG files to two repositories connected to the 'sandbox' and 'production' instances of !WebSVN. We also checked that no issue was seen on the production repository with TRAC (but there is no TRAC available connected to the sandbox). * Visual inspection of the files downloaded through the sandbox instance of !WebSVN (either directly from a browser or via [[http://linux.web.cern.ch/linux/docs/cernssocookie.shtml][wget with cookies]] to access protected pages) suggests that these files get corrupted by the addition of a leading character. Their size is exactly one byte larger than expected and the corruption can be removed by manually erasing the first character in a text editor (the files can then be opened and displayed normally after that). ---++++ Auto properties based on file suffixes These are all of the distinct suffixes from the files committed to CORAL and COOL CVS: * From =echo `find lcgcoral-201307/ -type f -name '*,v' -exec basename {} ,v \; | awk '{n=split($0,a,"."); if (n>1) print a[n];}' | sort -u`=: * _2 AK awk bat c C cfg cmt conf cpp cpp~ cpp_Govi cproject csh css csv cvsignore cxx db doc dtd err fig gz h hpp htaccess html icpp inc inl jpg log mk notes ora out php pid15613 pid2369 pl pm png project py pyc qmc qmt ref rules sh sql summary supp tmpl txt xml zip_ * From =echo `find lcgcool-201307/ -type f -name '*,v' -exec basename {} ,v \; | awk '{n=split($0,a,"."); if (n>1) print a[n];}' | sort -u`=: * _0 1 123 2 actions adjustTimeZone ANALYZED awk bat bhost bmp c cfg CLOB CMS_ECAL cmt commonName conf COOL COOL_1_1_0 CORAL cpp cppp csh css ctf cvsignore cxx dat db debug default141 diff dlclose doc doNotAdjustTimeZone dox Doxyfiles el !EmptyFile error fatal Foundation free frontier full g gdb ggo gif gmt gmtime gp gz h HEAD hpp htaccess htm html icpp in info jpg laptopLinux laptopLinux2 laptopLinux3 leak lfc log lookup mac mht mk mk~ !MutexLock mysql !MySQL !MySQLAccess new noclob noDlclose noexec noleak noPool NOPOOL noPurge notes NT OCI_DEFAULT ociTest OCI_THREADED opts ora Oracle osx103_gcc33 osx104_ia32_gcc401 osx104_ia32_gcc401_dbg osx104_ppc_gcc401 osx104_ppc_gcc401_dbg out patch pdf pem Performance php pl png ppt pptx prf py pyc python qmc qmr qms qmt ref rh73_gcc32 rh73_gcc323 rh73_gcc323_dbg rh73_gcc32_dbg rootrc SEAL security segmentationFault sh skipGrant slc3_amd64_gcc344 slc3_amd64_gcc344_dbg slc3_ia32_gcc323 slc3_ia32_gcc323_dbg slc3_ia32_gcc323_gcov slc3_ia32_gcc323_test slc3_ia32_gcc344 slc3_ia32_gcc344_dbg slc4_amd64_gcc34 slc4_amd64_gcc345 slc4_amd64_gcc345_dbg slc4_amd64_gcc34_dbg slc4_ia32_gcc34 slc4_ia32_gcc345 slc4_ia32_gcc345_dbg slc4_ia32_gcc34_dbg slc4_ia32_gcc41 sql sqlite sqlTrace src standalone STANDALONE summary supp swp tar templ template tests tex threads timing tpl trc txt typ ui unset verbose warning win32_vc71_dbg win32_vc71_dbg_cmt win32_vc71_dbg_cyg win32_vc71_dbg_wine windows wine wineTest wineVsCygwin xls xml xslt_ * Of these, the following suffixes have been included in auto-props in order to handle the corresponding files as binary: * _bmp db doc fig gif gz jpg pdf png ppt pptx pyc qmr swp tar xls zip_ * All other files have been handled as text files in the migration (even if a file not included above is marked as binary in CVS via the '-kb' property, this is ignored and the file is migrated as text). SVN keywords were not set for any files anyway, including text files. POOL was migrated using the same auto-props as for CORAL and COOL, described above. A posteriori, it was checked that these are all of the distinct suffixes from the files committed to POOL CVS: * From =echo `find lcgpool-201308/ -type f -name '*,v' -exec basename {} ,v \; | awk '{n=split($0,a,"."); if (n>1) print a[n];}' | sort -u`=: * _0-toolbox 1-toolbox 6-toolbox bat C cat cfg cmt conf cpp csh css cvsignore cxx defunc doc dtd env eps fig gif h h~ hmtl hmtl~ htm html html~ inl jpg log lxshare070d mdl mk mpp notes options pdf pjt pl pm png ppt py qmc qmr qms qmt reader ref rules saved sh sql svg sxi sxw test tmpl txt vthought writer xml zip_ * It was not checked explicitly if any of these suffixes represent additional binary file types that should have been handled differently in the migration and/or recovered a posteriori. However (see below) it was checked whether the CVS POOL-preview tag could be recovered from SVN. It was observed that a single file =AttributeList/doc/AttributeList-pool-component.sxw= had been corrupted in the cvs2svn migration and had to be recovered back from CVS. ---++ Post-migration configuration and cleanup ---++++ TRAC administration TRAC administration. * Requested TRAC interfaces to be enabled for lcgcoral and lcgcool ([[https://cern.service-now.com/service-portal/view-request.do?n=RQF0234770][RQF0234770]]) and for lcgpool ([[https://cern.service-now.com/service-portal/view-request.do?n=RQF0249689][RQF0249689]]). * For CORAL, as libcoral on https://svnweb.cern.ch/trac/lcgcoral/admin, granted TRAC_ADMIN to avalassi and valassi and granted BROWSER_VIEW to anonymous. * For COOL, as libcool on https://svnweb.cern.ch/trac/lcgcool/admin, granted TRAC_ADMIN to avalassi and valassi and granted BROWSER_VIEW to anonymous. * For POOL, as libcoral on https://svnweb.cern.ch/trac/lcgpool/admin, granted TRAC_ADMIN to avalassi and valassi and granted BROWSER_VIEW to anonymous. Fix an issue with TRAC after rerunning the COOL migration (to move !VerificationClient from contrib to cool). * Requested TRAC resync for lcgcool ([[https://cern.service-now.com/service-portal/view-request.do?n=RQF0237390][RQF0237390]]). ---++++ Configure access control and commit hooks The following post-migration actions involve modifications to the =conf= and =usr-hooks= sub-directories of the SVN repositories =/afs/cern.ch/project/svn/reps/<project>=. * These changes could be executed at the file-system level (using the AFS ACL of accounts libcoral and libcool). However, this would not provide any versioning for those scripts. * Alternatively, =conf= and =usr-hooks= can be modified in the special 'admin' SVN repository, as explained in the [[http://svn.web.cern.ch/svn/howto.php#adm-admin-rep][CERN SVN Service HOWTO]]. The admin repository can also be browsed (using the appropriate account) on [[https://svnweb.cern.ch/cern/wsvn/admin][WebSVN]] (but not on TRAC). * The lcgcool, lcgcoral and lcgpool subdirectories of the admin repository were initially accessible in read-write mode to the libcool, libcoral and libcoral librarian accounts, respectively. All three were also accessible to the primary owner account valassi. * Created three egroups VC-librarians-lcgcool, VC-librarians-lcgcoral and VC-librarians-lcgpool and sent requests ([[https://cern.service-now.com/service-portal/view-request.do?n=RQF0236976][RQF0236976]] and [[https://cern.service-now.com/service-portal/view-request.do?n=RQF0249689][RQF0249689]]) to add them to the allowed admins. According to the doc this should have worked out of the box, but the doc was obsolete. Hooks to send automatic emails on SVN commits. * Enable svn-mailer.py in /afs/cern.ch/project/svn/reps/<project>/usr-hooks/post-commit. * Disable revision diffs in /afs/cern.ch/project/svn/reps/<project>/conf/svn-mailer.conf. The email address for notifications is already set. Hooks to forbid revision log changes (all other revision property changes are already forbidden). * Forbid revision log changes in /afs/cern.ch/project/svn/reps/<project>/usr-hooks/pre-revprop-change. Configure access control. * Grant librarian privileges to avalassi and valassi in /afs/cern.ch/project/svn/reps/<project>/conf/authz. Remove the "Andrea.Valassi" group. * Request anonymous read access for all three repositories ([[https://cern.service-now.com/service-portal/view-request.do?n=RQF0239694][RQF0239694]] and [[https://cern.service-now.com/service-portal/view-request.do?n=RQF0249689][RQF0249689]]). * Configure read-write access control for the SPI team and all developers in [[https://svnweb.cern.ch/cern/wsvn/admin/lcgcoral/conf/authz?op=diff&rev=22107&peg=22107][lcgcoral admin]], [[https://svnweb.cern.ch/cern/wsvn/admin/lcgcool/conf/authz?op=diff&rev=22106&peg=22106][lcgcool admin]] and [[https://svnweb.cern.ch/cern/wsvn/admin/lcgpool/conf/authz?op=diff&rev=22983&peg=22983][lcgpool admin]]. ---++++ CVS write access removal and SVN repository cleanup Remove write access from CORAL (lcgcoral), COOL (COOL) and POOL (PF) CVS repositories * Only allow commits anywhere by cvsadmin and the libcoral/libcool/libcoral librarian accounts for the three projects. * In addition, only allow commits by avalassi under CVSROOT. * Forbid tags from anyone anywhere. * Requested ([[https://cern.service-now.com/service-portal/view-request.do?n=RQF0237336][RQF0237336]]) that in the AFS ACL the three previous CVS librarian accounts cvscoral, cvscond and cvspf be replaced by the SVN librarian accounts libcoral, libcool and libcoral (also for POOL). * Deleted the cvscond, cvscoral and cvspf accounts after the AFS ACL changes were done. * Note that !ViewCVS will be switched off at the same time as the CVS servers. SVN repository cleanup for CORAL and COOL. * Last SVN revisions from the cvs2svn migration ([[https://svnweb.cern.ch/cern/wsvn/lcgcoral/?op=log&isdir=1&rev=18994&peg=18994][18994]] for lcgcoral and [[https://svnweb.cern.ch/cern/wsvn/lcgcool/?op=log&isdir=1&rev=18528&peg=18528][18528]] for lcgcool): create 'cvs201307' tags describing CVS before the migration. * First SVN commits in both projects ([[https://svnweb.cern.ch/cern/wsvn/lcgcoral/?op=revision&rev=18995&peg=18995][18995]] in lcgcoral and [[https://svnweb.cern.ch/cern/wsvn/lcgcool/?op=revision&rev=18529&peg=18529][18529]] in lcgcool): remove the cvs2svn:cvs-rev property from all files in trunk/CVSROOT. * Commit to SVN trunk/CVSROOT the two last CVS changes that remove write access ([[https://svnweb.cern.ch/cern/wsvn/lcgcoral/?op=revision&rev=18997&peg=18997][18997]] in lcgcoral and [[https://svnweb.cern.ch/cern/wsvn/lcgcool/?op=revision&rev=18531&peg=18531][18531]] in lcgcool). * Remove trunk of obsolete packages migrated as individual 'projects' ([[https://svnweb.cern.ch/cern/wsvn/lcgcoral/?op=revision&rev=18998&peg=18998][18998]] in lcgcoral and [[https://svnweb.cern.ch/cern/wsvn/lcgcool/?op=revision&rev=18532&peg=18532][18532]] in lcgcool/cool and [[https://svnweb.cern.ch/cern/wsvn/lcgcool/?op=revision&rev=18533&peg=18533][18533]] in lcgcool/contrib). * Remove svn:executable property from .h and .cpp files in trunk, patches tags and active branches. This was not cleaned up in CVS as these files were installed as executable in AFS releases. * Remove svn:executable property from .h and .cpp files in lcgcoral trunk ([[https://svnweb.cern.ch/cern/wsvn/lcgcoral/?op=revision&rev=18999&peg=18999][18999]]). * Remove svn:executable property from .h and .cpp files in lcgcoral CORAL-preview ([[https://svnweb.cern.ch/cern/wsvn/lcgcoral/?op=revision&rev=19000&peg=19000][19000]]). * Remove svn:executable property from .h and .cpp files in lcgcoral CORAL_2_3-patches ([[https://svnweb.cern.ch/cern/wsvn/lcgcoral/?op=revision&rev=19001&peg=19001][19001]]). * Remove svn:executable property from .h and .cpp files in lcgcool trunk ([[https://svnweb.cern.ch/cern/wsvn/lcgcool/?op=revision&rev=18534&peg=18534][18534]]). * Remove svn:executable property from .h and .cpp files in lcgcool COOL-preview ([[https://svnweb.cern.ch/cern/wsvn/lcgcool/?op=revision&rev=18535&peg=18535][18535]]). * Remove svn:executable property from .h and .cpp files in lcgcool COOL_2_8-patches ([[https://svnweb.cern.ch/cern/wsvn/lcgcool/?op=revision&rev=18536&peg=18536][18536]]). * Keep a copy of the latest CORAL_2_3-ATLAS-branch in CVS as tag cvs201307_CORAL_2_3-ATLAS-branch ([[https://svnweb.cern.ch/cern/wsvn/lcgcoral/?op=revision&rev=19002&peg=19002][19002]]). * Move doc and CVSROOT out of CORAL releases * Remove doc from CORAL_2_3-patches (%CORALSVNLOG{"19003"}%) * Remove doc from CORAL-preview (%CORALSVNLOG{"19004"}%) * Move lcgcoral/coral/trunk/doc to lcgcoral/doc (%CORALSVNLOG{"19005"}%) * Move lcgcoral/coral/trunk/CVSROOT to lcgcoral/CVSROOT (%CORALSVNLOG{"19006"}%) * Move doc and CVSROOT out of COOL releases * Remove doc from COOL_2_8-patches (%COOLSVNLOG{"18537"}%) * Remove doc from COOL-preview (%COOLSVNLOG{"18538"}%) * Move lcgcool/cool/trunk/doc to lcgcool/doc (%COOLSVNLOG{"18539"}%) * Move lcgcool/cool/trunk/CVSROOT to lcgcool/CVSROOT(%COOLSVNLOG{"18540"}%) * First productions releases based on SVN * New release CORAL_2_3_27a with tag copied from CORAL_2_3-patches (%CORALSVNLOG{"19007"}%) * New release COOL_2_8_18a with tag copied from COOL_2_8-patches (%COOLSVNLOG{"18541"}%) * Ensure that branches contain whole directories so that they can be checked out over the checkout of the trunk (note that 'svn status' will show an "S" to indicate this 'switch'). * Copy the whole of !CoralBase/CoralBase from CORAL_2_3-patches to CORAL_2_3-branch (19008 to %CORALSVNLOG{"19010"}%). Previously only !VersionInfo.h was in the branch. * Copy the whole of !CoolKernel/CoolKernel from COOL_2_8-patches to COOL_2_8-branch (%COOLSVNLOG{"18546"}%). Previously only !VersionInfo.h was in the branch. * Remove the cvs2svn:cvs-rev property from all files in the trunk and active branches or sliding tags. * Remove cvs2svn:cvs-rev property from all files in lcgcoral trunk (%CORALSVNLOG{"19011"}%) * Remove cvs2svn:cvs-rev property from all files in lcgcoral CORAL-preview (%CORALSVNLOG{"19012"}%) * Remove cvs2svn:cvs-rev property from all files in lcgcoral CORAL_2_3-patches (%CORALSVNLOG{"19013"}%) * Remove cvs2svn:cvs-rev property from all files in lcgcoral CORAL_2_3-branch (%CORALSVNLOG{"19014"}%) * Remove cvs2svn:cvs-rev property from all files in lcgcoral CORAL_2_3-ATLAS-branch (%CORALSVNLOG{"19015"}%) * Remove cvs2svn:cvs-rev property from all files in lcgcoral CORAL_2_4-branch (%CORALSVNLOG{"19016"}%) * Remove cvs2svn:cvs-rev property from all files in lcgcool trunk (%COOLSVNLOG{"18542"}%) * Remove cvs2svn:cvs-rev property from all files in lcgcool COOL-preview (%COOLSVNLOG{"18543"}%) * Remove cvs2svn:cvs-rev property from all files in lcgcool COOL_2_8-patches (%COOLSVNLOG{"18544"}%) * Remove cvs2svn:cvs-rev property from all files in lcgcool COOL_2_8-branch (%COOLSVNLOG{"18545"}%) * This has the [[http://www.chiark.greenend.org.uk/~sgtatham/svn.html][well-known downside]] that all files will appear to have been recently modified, even if they have not really changed in a long time. Unfortunately, this property [[http://www.open.collab.net/community/subversion/svnbook/svn.reposadmin.create.html][should not be modifed in commit hooks]]. Removing them during the cvs2svn migration (in the !CVSRevisionNumberSetter class) after the last CVS revision of a file is committed seems too complex compared to its benefits.The only remaining options are to not move the metadata in the migration (which would be a pity as they are used in savannah to document code changes), keep them forever (which may lead to very confusing situations) or remove them after the migration (which has this side effect that all files appear to have been recently modified). * %RED% *TODO:* %ENDCOLOR% add SVN keywords for all non-binary files? * %RED% *TODO:* %ENDCOLOR% check how to configure auto props server-side for newly committed files * %RED% *TODO:* %ENDCOLOR% archive (in SVN?) the tools and data for the cvs2svn migration. Minimal SVN repository cleanup for POOL. * The last SVN revisions from the cvs2svn migration for POOL is [[https://svnweb.cern.ch/cern/wsvn/lcgpool/?op=log&isdir=1&rev=25744&peg=25744][25744]]. * A minimal cleanup of the SVN repository was performed for POOL, limited to the trunk and especially the POOL-preview tag (up until revision [[https://svnweb.cern.ch/cern/wsvn/lcgpool/?op=log&isdir=1&rev=25751&peg=25751][25751]]). In particular, the SVN repository was changed (by removing several files from the POOL-preview tag and by also replacing one binary file) until the following gave no remaining differences: * =diff -r POOL-preview/ pool.release/ --exclude=.svn --exclude=CVS -I'$Id' -I'$Date' -I'$Header' --exclude=.cvsignore= * In the CVS directory, however, several files had to be processed through dos2unix before running the above diff: * =dos2unix !AttributeList/doc/AttributeList-pool-component.sxw Collection/ChangeLog Tests/Collection_BackNavigate/src/Collection_BackNavigate.cpp Tests/Collection_ExplicitReadPerformance/src/Collection_ExplicitReadPerformance.cpp Tests/Collection_ExplicitWritePerformance/src/Collection_ExplicitWritePerformance.cpp Tests/Collection_FileInfoRetrieve/src/Collection_FileInfoRetrieve.cpp Tests/Collection_MultiFileUpdate/src/Collection_MultiFileUpdate.cpp Tests/Collection_MultiFileWrite/src/Collection_MultiFileWrite.cpp Tests/Collection_Update/src/Collection_Update.cpp config/doxygen/Doxyfile config/doxygen/Doxyfile_POOL.cfg= Repository improvements for CORAL and COOL using the SVN-specific 'external' feature. * Avoid the duplication of common files in both CORAL and COOL using [[http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html][SVN externals]]. * Remove USERCONTEXT/avalassi from COOL trunk and take it as an external from CORAL trunk (%COOLSVNLOG{"18581"}%) * Remove USERCONTEXT/avalassi from CORAL and COOL nightly tags and a fortiori from release tags (%CORALSVNLOG{"19114"}% and %COOLSVNLOG{"18667"}%) * Avoid the duplication of logs across CORAL trunk, tags and branches * Move lcgcoral/coral/trunk/logs to lcgcoral/logs (%CORALSVNLOG{"19072"}%) * Remove logs from CORAL_2_3-patches and CORAL-preview (%CORALSVNLOG{"19073"}%) * Take lcgcoral/coral/trunk/logs as an external from lcgcoral/logs (%CORALSVNLOG{"19074"}%) * Take lcgcoral/coral/tags/CORAL-preview/logs as an external from lcgcoral/logs (%CORALSVNLOG{"19075"}%) * Take lcgcoral/coral/tags/CORAL_2_3-patches/logs as an external from lcgcoral/logs (%CORALSVNLOG{"19076"}%) * Avoid the duplication of logs across COOL trunk, tags and branches * Move lcgcool/cool/trunk/logs to lcgcool/logs (%COOLSVNLOG{"18599"}%) * Remove logs from COOL_2_8-patches and COOL-preview (%COOLSVNLOG{"18600"}%) * Take lcgcool/cool/trunk/logs as an external from lcgcool/logs (%COOLSVNLOG{"18601"}%) * Take lcgcool/cool/tags/COOL-preview/logs as an external from lcgcool/logs (%COOLSVNLOG{"18602"}%) * Take lcgcool/cool/tags/COOL_2_8-patches/logs as an external from lcgcool/logs (%COOLSVNLOG{"18603"}%) * Avoid the duplication of common qmtest tools in both CORAL and COOL using SVN externals (for whole directories) and symbolic links (for individual files). * Move qmtest tools in CORAL from logs/qmtest to logs/qmtest/tools and add them back as symbolic links (%CORALSVNLOG{"19086"}%) * Remove qmtest tools in COOL from logs/qmtest and add them back as symbolic links to the (CORAL external) logs/qmtest/tools (%COOLSVNLOG{"18620"}%) * %ORANGE% *WARNING* %ENDCOLOR% In some cases, the ssh password was asked again while "fetching external items" from SVN. No clear pattern was observed. Removing "-q" from the ssh command in ~/.subversion/config, some specific IP addresses in the svn.cern.ch cluster were printed out, but then these were tested explicitly and no authentication problems were observed. Suing [[http://fetchsoftworks.com/blog/subversion-and-ssh-authentication-shenanigans][ssh sharing]] does not seem to appropriate (and in any case it [[http://www.perlmonks.org/?node_id=924915][does not work]] if ~/.ssh is on AFS). In case any issues are observed again, it may be worthwhile to test specific nodes again anyway, as the svn.cern.ch cluster has several nodes (many more than the three nodes visible using the 'host' command). -- Main.AndreaValassi - 21-Aug-2013
E
dit
|
A
ttach
|
Watch
|
P
rint version
|
H
istory
: r33
<
r32
<
r31
<
r30
<
r29
|
B
acklinks
|
V
iew topic
|
WYSIWYG
|
M
ore topic actions
Topic revision: r33 - 2016-04-09
-
AndreaValassi
Log In
Persistency
ObsoleteTopics
OLDPersistencyCvs2Svn
Release Notes
Presentations/Publications
CORALCOOL JIRA
ROOT JIRA
SPI JIRA
SVN admin
(WebSVN)
SVN COOL
(trac)
SVN CORAL
(trac)
GIT lcgcmake
(gitlab)
Coverity
Nightlies (cdash)
Nightlies (jenkins)
persistency quattor cluster
coral puppet cluster
lcgapp cluster (nightlies)
coral puppet GIT
AFS console
Persistency Web
Web Left Bar
Create New Topic
Web Index
Web Search
Web Changes
Web Notifications
Web Statistics
Web Preferences
Web Interwikis
TWiki Information
TWiki Documentation
TWiki Support
TWiki Plugins
TWiki Text Formatting
Cern Search
TWiki Search
Google Search
Persistency
All webs
Copyright &© 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use
Discourse
or
Send feedback