I like to use Mercurial to track our local mods.
   http://www.selenic.com/mercurial/wiki/

There are some nice tools to support that:
  
http://www.selenic.com/mercurial/wiki/index.cgi/WorkingWithSubversion


I just do a simple setup though - keep a few copies of the code
around.
   *.     /dspace-pure/...  - straight dspace-checkout
   *.     /local-release/...  - realease-ready code
   *.    /work/...                - work area

When I have something in /work/ ready for release, then
     'hg push' 
form work/ to local-release/ and run pre-release tests.
When we're ready to pull in updates from dspace-repo,
then 
      svn update
in dspace-pure/
     hg pull
the dspace-pure stuff into /work.
Something like that.

Long term dspace should consider moving to Mercurial for
source control.  Systems like Mercurial and Git (used by the Linux
kernel team)
make it easy to maintain local branches and repositories independent
of the central "master" repository.

I was disappointed to find that the dspace code base does not
include a suite of JUnit regression tests - which complicates the
update, merge process and forces add hock system-level testing.

The current system's fragile design makes it difficult to add
regression tests:

   *. use of classes instead of interfaces in the API makes it
difficult to
                mock out subsystems

   *. extensive use of global (static) variables rather than dependency
injection
           makes it difficult to isolate individual test cases. 

   *. strong tie to database schema rather than object model 
            with ORM mapping hidden away 

    *. custom code rather than building on top of a J2EE platform
        (JBoss, Glassfish, Geronimo are all free)
        that provides database connection management, 
        pluggable authentication, object-relational database mapping,
        logging, mail session management, transactions, etc. out of the
box.

I hope future versions of dspace include design changes,
and introduce a suite of regression tests.

Cheers,
Reuben

BTW - There are some great tools out there to help:
     http://code.google.com/p/google-guice/ 
     http://www.junit.org/ 
     http://www.easymock.org/ 
     http://www.hibernate.org/ 
    
http://java.sun.com/j2se/1.4.2/docs/guide/security/jaas/tutorials/GeneralAcnOnly.html

     http://jboss.org/ 
     http://geronimo.apache.org/ 
     https://glassfish.dev.java.net/ 
     http://java.sun.com/docs/books/effective/ 



>>> Diggory Mark <mdigg...@gmail.com> 2/3/2009 4:24 PM >>>
Or to be more explicit you add the pom at

{dspace-source}/dspace/modules/custom-api/pom.xml

and modify the following with <module>custom-api</module>

{dspace-source}/dspace/modules/pom.xml

And add custom-api as a dependency in

{dspace-source}/dspace/pom.xml

Mark

On Feb 3, 2009, at 2:14 PM, Diggory Mark wrote:

> no
>
> On Feb 3, 2009, at 2:06 PM, Thornton, Susan M. (LARC-B702)[NCI  
> INFORMATION SYSTEMS] wrote:
>
>> Do I need to modify {dspace-source}/pom.xml ??
>>
>> From: Diggory Mark [mailto:mdigg...@gmail.com] 
>> Sent: Tuesday, February 03, 2009 4:10 PM
>> To: Thornton, Susan M. (LARC-B702)[NCI INFORMATION SYSTEMS]
>> Cc: dspace-tech
>> Subject: Re: [Dspace-tech] Local modifications to DSpace .java  
>> programs, in 1.5.1
>>
>> Susan,
>>
>> The way to do it without altering the code in place requires  
>> creating a custom maven project within the dspace/modules/  
>> directory, wiring it into the dspace/pom.xml and dspace/modules/ 
>> pom.xml so that it compiles into the build process.
>>
>> At this point, I'm seeing community member using both approaches,  
>> and I'm unsure which I would most recommend. But here's what I try 

>> to approach as a best practice.
>>
>> 1.) I don't like to alter code in place in dspace-api, dspace-xmlui 

>> or any of those projects unless I intend to contribute it into the 

>> next release of DSpace 1.5.x
>>
>> 2.) Keeping all those projects around lengthens the build process  
>> and if your not using all of them (dspace-sword, lni, etc) thats a 

>> lot of compile time for nothing.
>>
>> 3.) Once configured properly, your changes in dspace/modules/xxx  
>> will always be separate from the rest of the codebase, but you will 

>> still need to verify that upgrades don't break your customizations 

>> by comparing your code to the original.  Something we continue to  
>> strive to get away from.
>>
>> So I would recommend the following steps:
>>
>> a.) create a dspace/modules/custom-api/pom.xml for your api  
>> changes. That looks something like the attached pom.xml
>>
>
> ~~~~~~~~~~~~~
> Mark R. Diggory
> http://purl.org/net/mdiggory/homepage 
>
>
>

~~~~~~~~~~~~~
Mark R. Diggory
http://purl.org/net/mdiggory/homepage 




------------------------------------------------------------------------------
Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM)
software. With Adobe AIR, Ajax developers can use existing skills and code to
build responsive, highly engaging applications that combine the power of local
resources and data with the reach of the web. Download the Adobe AIR SDK and
Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com
_______________________________________________
DSpace-tech mailing list
DSpace-tech@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspace-tech
  • [Dspace-tech] Loca... Thornton, Susan M. (LARC-B702)[NCI INFORMATION SYSTEMS]
    • Re: [Dspace-t... Kim Shepherd
      • Re: [Dspa... Thornton, Susan M. (LARC-B702)[NCI INFORMATION SYSTEMS]
        • Re: [... Kim Shepherd
        • Re: [... Diggory Mark
          • R... Kim Shepherd
          • R... Thornton, Susan M. (LARC-B702)[NCI INFORMATION SYSTEMS]
            • ... Diggory Mark
              • ... Diggory Mark
                • ... Reuben Pasquini
                • ... Thornton, Susan M. (LARC-B702)[NCI INFORMATION SYSTEMS]
                • ... Diggory Mark
                • ... Kim Shepherd

Reply via email to