Practices for maintaining source code patches for branch of OSS project?

There is this open source project I use and modify for my personal, private use...
I would like some best-practice/practical experience suggestions on methodology/tools to maintain a growing number of source code patches I have created for said software. (FYI It is generally not mandatory that I upgrade to new version of the software when it comes out. Sometimes I will use the version I have for several versions before getting the new one, and re-implementing my changes. And sometimes I don't even implement the changes; I just run it vanilla.)
Currently, I download the latest code from SVN, make my changes to the original code files, and keep track of my changes in a text file, which I then dutifully reference to re-create them when I feel like re-synching with the official version. What I would like to have instead is a separate base of code that contains just my modifications, and somehow include/import it as painlessly as possible whenever I get a new version of the official code from SVN.
What's the best way to go about it? That's why I'm here.
I realize these situations rarely, if ever, work out perfectly, and I can deal with that. I just want to improve on how things are, now, in anticipation of where I can see them going!
I have some ideas about how to implement this, but they are of the "naive" variety and I think any tips I could get on method or tools to use would go far. I mean ... is it as simple as declaring new versions of affected methods in my patch code and marking them "overrides"? Also, probably a dumb question but will SVN that will help me do this?
Thanks for reading, and any response.
PS - Sorry if this is the wrong forum, but I am just looking for general, tip-of-the-iceberg type tips/links, so I figured folks could drop a quick answer here. TY!

The patch program on *nix or Cygwin does exactly what you want, and you can create the patchfile using either Subversion or CVS (and any other source control system that provides a diff).
Here's the article that I always turn to to create a CVS Patch (I have to relearn patching every time I do it): https://developer.mozilla.org/en/Creating_a_patch
And here's the equivalent from the Subversion FAQ: http://subversion.tigris.org/faq.html#patch
When I've worked for companies that did local patches, we kept a separate source-control repository/module that held our patches for the various OS libraries that we used. When we'd upgrade, we'd apply the patches and verify they made sense (if you have a lot of patchfiles, this can be a royal pain). And most important, once we had a patched upgrade, we generated a new patchfile from it (because, again, patchfiles become obsolete, and trying to apply a patch from several versions back can sometimes be impossible).
And of course we submitted any bugfixes back to the projects...

Similar Messages

  • How to use Source Code Control for Large Application?

    Hi, All!
    I would like to collect knowledge about "best practice" examples for using Source Code Control and project organization for relative large application (let's say approx 1000 SubVIs).
    Tools used:
    LabVIEW 8.0
    CVS Server
    PushOK CVS Proxy Client
    WinCVS
    With LabVIEW 8 we can organize large project pretty well. This described in article Managing Large Applications with the LabVIEW Project.
    I have read this article too: Using Source Control Software with LabVIEW In this Article Source Safe used, but with PushOK all looks nearby the same and works (some tricks for compare function are required).
    Example. Two developers working together on same project. Internally project is modular, so one developer will work with module "Analysis", and another one with "Configuration" without interferences. These modules placed into Subfolders as shown in example above.
    Scenario 1:
    Developer A started with modification of module "Analysis". Some files checked out. He would like to add some SubVIs here. So, he must also perform check out for the project file (*.lvproj), otherwise he cannot add anything into project structure.
    Developer B at the same time would like to add some new functions into module "Configuration". He also needed to check out project file, but this file already checked out by Developer A (and locked). So, he must wait until lvproj file will be checked in. Another way is mark *.lvproj files as text files in PushOK, but then one of developers will get conflict message by checking in and then merging will be necessary. This situation will coming very often, because in most cases *.lvproj file will be checked out all the time.
    Question: Which practice is better for such situation? Is Libraries better than folder for large project?
    Scenario 2:
    Developer C joined to the team. First, he must get complete project code for starting (or may be at least code of one Library, which assigned to him).
    Question: How it can be done within LabVIEW IDE? Or WinCVS (or other SCC UI) should be used for initial checkout?
    Scenario 3:
    Developer D is responcible for Build. Developers A,B,C have added lot of files into modules "Analysis", Configuration" and "FileIO". For building he need to get complete code. If our project splitted into folders, he should get latest *.lvproj first, then newly added SubVIs will appear in Project Explorer, then he should expand tree, select all SubVIs and get latest versions for all. If Project organized in Libraries, he must do the same for each library, isn't?.
    Question: Is this "normal way", or WinCVS should be used for this way? In WinCVS its possible with two mouseclicks, but I prefer to get all code from CVS within LabVIEW IDE recursively...
    That was a long post... So, if you already working with LabVIEW 8 with SCC used for large project, please post your knowledge here about project structure (Folders or Libraries) and best practices, its may be helpful and useful for all of us. Any examples/use cases/links etc are appreciated.
    Thank you,
    Andrey

    Regarding your scenarios:
    1. Using your example, let's say both developers checked out version 3
    of the project file. Assuming that there are only files under the
    directories in the example project, when Developer A checks in his
    version of the project, there will be new files in one section of the
    project separate from where Developer B is working. Developer B,
    notices that there is now a version 4 of the project. He needs to
    resolve the changes so will need to merge his changes to the latest
    version of project file. Since the project file is a text file, that is
    easy to do. Where an issue arrises is that after Developer B checks in
    his merged changes, there is a revision 5. When Developer A and B go to
    make another change, they get the latest version which will have the
    merged changes to the project file but not the referenced files from
    both Developer A and B. So when A opens version 5, he sees that he is
    missing the files that B checked in and visa versa. Here is where the
    developers will needs to manually use the source control client and,
    external to LabVIEW, get those new files.
    Where libraries help with the above scenario is that the library is a
    separate file from the project so changes made to it outside of the
    project do not require the project to be modified. So this time, the
    developers are using a single project again which time time references
    two libraries. The developers check out the libraries, make changes to
    the libraries, and then check those changes in. So when each developer
    opens the project file, since it references the project file, the
    changes to the library will be reflected. There is still the issue of
    the new files not automatically coming down when the latest version of
    the library is obtained. Again, the developers will needs to manually
    use the source control client and, external to LabVIEW, get those new
    files. In general, you should take advantage of the the modularity that
    libraries provide.
    2. As noted in the above scenario, there is no intrinsic mechanism to
    get all files referenced by a LabVIEW project. Files that are missing
    will be noted. The developer will then have to use the source control
    provider's IDE to get the initial contents of the project  (or library).
    3. See above scenarios.
    George M
    National Instruments

  • Unable to depoly Web Serivce for the source code written in other editors

    Hi all,
    I am planning to implement webservice with the following code. But I am facing few problems with this can some body help me with this.
    The code looks like this AND IS NOT WRITTEN IN Jdeveloper BUT EDITPLUS
    package package1;
    public class Sum
    public int getSum(int a, int b)
              return a+b;
    package package2;
    public class Sub
    public int getSub(int a, int b)
              return a-b;
    package package3;
    import package1.*;
    import package2.*;
    public class Mul implements TestInterface
         Sum sm = new Sum();
         Sub sb = new Sub();
    public int getMul(int a, int b)
              return sm.getSum(a,b)*sb.getSub(a,b);
    public static void main(String [] args)
              Mul ml = new Mul();
              System.out.println(“The result of (3+6)*(3-6) is “+ ml.getMul(3,6));
    package package3;
    interface TestInterface extends java.rmi.Remote;
         public int getMul(int a, int b) throws java.rmi.RemoteException;
    I have written this in editplus. Not in Jdeveloper.
    Now I want publish getMul() as web service using Jdeveloper.
    I have created a new application work space. And from File-->New
    I have choose project from existing source and imported “package3”.
    At this stage it was unable to find the class files Sum and Sub so I placed Sum.class and Sub.class in Appliction1-Project1-classes-
    Now the Mul class did not have any errors and it compiled fine. When run it gave the correct output.
    Using the web service wizard I was able to generate wsdl file , deployment descriptors etc.
    The problem I was facing was form this stage when I am trying to deploy it on to a standalone oc4j server it is not able generate the WebServices.war file and hence is not deployed on to the server.
    With the same code written in Jdeveloper everything is working fine.
    My doubts are
    1)     why is it not able to generate WebService.war file?
    2)     It is giving some ClassNotFound exception during the deployment. But when compiled and run its giving the correct output.
    3)     Even when everything was written from within the Jdevelper it did not include Sum.calss and Sub.class in WebSevice.war. Is there any way we could mention during its (WebService.war) generation , the class files to be Included.
    The other issue is how to add an existing source code to already existing project. In my case Once I have imported package3 I also want to import package2 and package1 in different steps.
    I thank in advance for helping me.
    Raja Vamshi k Gopu

    Can you tell us what you mean by correct type of project?
    You can start with an empty project. Then, you have to create an "EAR file" deployment profile (New Gallery / General / Deployment Profiles).
    So when I deploy a J2SE module onto oc4j server should I specify the class path? If so where ? How can I solve this problem?
    Once you deploy your code into oc4j, it becomes a J2EE application. You don't need to deal with the classpath - just make sure that all the required code is included in your .war file. To do so, check the list of classes packaged under the deployement properties dialog.
    Can you send me the links of few articles where I can learn more about these kind of stuff?
    If you want to assemble applications without to use JDeveloper wizard, you have another option: using the WebServiceAssembler tool that is par of the oc4j bits will help you to do this from a command line promt, and will handle the J2EE packaging aspect for you.
    See online documentation (10.1.2): http://download-west.oracle.com/docs/cd/B14099_04/web.htm
    In the "Developer's Guide", chapter 9 is about "Web Services Tools"
    For JDeveloper J2EE samples, you can start by looking at the OBE: http://www.oracle.com/technology/obe/obe_as_1012/j2ee/index.html
    Hope this helps,
    Eric

  • Retrieve already deployed webdynpro for java source code from portal server

    HI ,
       We have webdynpro for java apllication already deployed on the J2EE server.  We found the ear file related to this application.  But I am not able to make any changes to the ear file in NWDS as it cannot be directly imported into NWDS.  We do not have NWDI for software logistics and the resource who built the WDJ application has left the company.  Is there any way that I can retrieve the complete source code of the application from the portal.  I need to make some changes to Webdynpro component and its view.  I have worked with basis team to retrieve the ear file from portal server.  But I could not make any progress just with the ear file.  Thank you for your help in advance
    Regards,
    KMM.

    You are probably breaking some license agreement by de-compiling the content of the 'war' files. Why not ask the people who provided the 'war' file if you could have the source and build system.

  • Dbx cannot locate the (DLM) source codes correctly for 64bit app

    It's hard for me to prepare a test case. Because it seems for a simple "hello world" it works.
    The reason I raise this issue here is because my project was recently upgraded to compile with 64bit. And since then dbx cannot locate the source codes correctly, especially for some DLM codes. (sometimes it shows to "/usr/include/iso/..." which it should never be!). While it works fine on a 32bit compiled mode.
    Did anyone experience the similar situation and can share your idea?
    Thanks in advance.

    Can't think of any good reason why going to 64 bit would confuse dbx (except for unknown bug in dbx, which is not impossible).
    I'd first look for changes in your build - for example, 32-bit code used to go to bin/ directory, but 64-bit goes to bin/sparcv9, which happens to be a symlink somewhere else or something like that. Symlinks might sometimes confuse dbx, please read
    (dbx) help finding-filestopic (in dbx console, type "help finding-files").
    Since you are using CC 5.9 that generates DWARF info by default, location and even presence of .o files is not important. All debug info should be in the shared library itself.
    Here's another idea: inspect DWARF info by hand and see if it looks correct to you.
    $ dwarfdump a.out | lessLook for
                    DW_AT_name                  a.ccand
                    DW_AT_comp_dir              /home/maxim/tempThose two should give location of source file (/home/maxim/temp/a.cc in my case). Maybe this will give you some clue.

  • Is Source Code availble for all the iFS clases (i.e.: webui package)

    I am trying to build some custom pages to interact with iFS. Some of them are similar to the prebuilt pages (to do searches for example).
    I found the class files that the JSPs use but cannot find any source code for them. Are they available? I know there are several packages that the API is provided for but by looking at how the webui classes, etc. interact it would provide insight into how to use them.
    For example I want search pages that will take a list of folders and fillnames(via a Query string) and generate a list similar to what "container" does via the "advancedfind.jsp" page.
    Basically I am found the jar files such as
    ...\jsp\lib\ojsp.jar
    ...\ifs1.1\lib\webui.jar
    ...\ifs1.1\lib\utils.jar
    ...\ifs1.1\lib\email.jar
    I am looking for source and JavaDoc for these classes if it exists.
    Thanks,
    Simon

    the source code for the WebUI and other modules that make up 9iFS is not available to the public. there is example code for using the API in the 9iFS (version 9.0.1) installation. you can also consult the documentation and whitepapers here on OTN.

  • Source Code Control for Java development in 6.20

    I am new to Java development. How do you control source code (versioning/transport) for Java development with the base R/3 is 6.20. I believe Java Development Infrastructure (JDI) is only available in 6.40. Is this the correct statement? Anyone that has work on 6.40 with Java can explain?
    Let say we have this setup:
    Applications are in 6.20
    Portal will be EP 6.0
    Do we need Web AS 6.40 to develop Java for Portal with base R/3 of 6.20. Or we can use Developer Studio to create Java accessing R/3 6.20 and display in Portal 6.0. If this is the case, how do you manage transport is you are not using JDI in 6.40.

    Hi Nablan,
    I believe you are development J2EE applications. JDI only runs with WebAS 6.40 which supports J2EE spec. 1.3. The developed J2EE archive will not be able to deploy to WebAS 6.20 which only supports J2EE 1.2 spec. So if you want to deploy the created software build from JDI and deploy it to WebAS 6.20, then the answer is unfortunately no.
    But, if you just want the Portal be able to display your application in an iView inside, then maybe you can just develop and deploy your application to the WebAS 6.40 system. Then create an iView in your EP to point to the app in the 6.40 system. That way your app will not need to deploy to WebAS 6.20.
    Regards,
    Marc

  • Source Code Fomatter for Oracle Jdeveloper 9i

    Guys,
    I am using Jdeveloper 9i and want to format the tool according to some standards but across the web and in the the oracle portal as well i have found formatting tools for jdev 10g but none for jdev 9i.Can anyone suggest me how to go about this.
    Thanks&Regards,
    Satish

    Hi,
    You can download source code for the 9i Handbook from either of the following websites:
    http://ourworld.compuserve.com/homepages/Peter_Koletzke
    http://www.dulcian.com
    Note that, if you're using Oracle JDeveloper 10g (rather than Oracle9i JDeveloper), you might be interested in the just-published Oracle JDeveloper 10g Handbook. Oracle JDeveloper 10g has some very significant differences from Oracle9i JDeveloper--especially the introduction of Oracle Application Development Framework (ADF)--and these are covered in the new book but not the old one.
    If you do get the new book, you can download code for it (or rather, will be able to by the end of this week) from either of the above websites or from
    http://avromroyfaderman.com
    Hope this helps,
    Avrom

  • Source Code error for Report Shipping

    Hello,
    This is regarding Report Shipping.
    As per SAP Report Shipping Implementation Guide
    for 4.1Settings for the SD Interface: Shipping Docu-ments
    Under  Environment, Health & Safety> Product Safety> Report Shipping> Basic Settings for Shipping from SD Documents> Material Safety Data Sheet/Sales and Distribution Interface> Settings for the SD Interface: Shipping Documents> Output Determination-->  Check Conditions.. it should be like below
    Routine number: <26>
    Description: Environmentally rlvt
    Active: X (set)
    Application: V2
    Source code:
      FORM KOBED_<Key>.
      SY-SUBRC = 0.
      CHECK KOMPB V2 -KZUMW IS INITIAL.
      SY-SUBRC = 4.
      ENDFORM.
      FORM KOBEV_<Key>.
      SY-SUBRC = 0.
      CHECK KOMPB V2 -KZUMW IS INITIAL.
      SY-SUBRC = 4.
      ENDFORM
    on the other had, i have check 2-3 standard Systems,
    same for Settings for the SD Interface: Shipping Documents> Output Determination>  Check Conditions..
    it is like below
    Routine number: <26>
    Description: Environmentally rlvt
    Active: X (set)
    Application: V1
    Source code:
      FORM KOBED_<Key>.
      SY-SUBRC = 0.
      CHECK KOMPB V1 -KZUMW IS INITIAL.
      SY-SUBRC = 4.
      ENDFORM.
      FORM KOBEV_<Key>.
      SY-SUBRC = 0.
      CHECK KOMPB V1 -KZUMW IS INITIAL.
      SY-SUBRC = 4.
      ENDFORM
    so which one is Correct? Implementation Guide or Standard Setting of System.
    Please guide me.
    Edited by: Amol Joshi on Dec 29, 2010 4:42 PM

    Hi Amol.
    Both are correct.
    The MSDS can be send with the sales order (V1) or with the delivery (V2), it depends of the logistic process configured in the system.
    In SD the delivery may or may not be configured.
    If the delivery is configured selects V2, in the other cases V1.
    Regards.
    JCD

  • Spry Menu code patch for IE browser?

    Does anyone remember the Adobe e-blast with the coding patch that was suppose to fix spry menu issues with IE browser? Now that I need it, I can not find it anywhere.

    Hi PBSOakley,
    You've  posted your question in a forum for BrowserLab, a web service for  cross-browser testing of web pages. I think you'll have much better luck  if you repost your question in the Spry forums here:http://forums.adobe.com/community/labs/spry
    Hope this helps,
    Mark

  • Remove source code names for Spry Content Slides

    I installed the widget Spry Content Slides and then removed it because it extended beyond the main column into a sidebar. Even though the code is gone the labels remain at the top with all the other source code labels. I want to reinstall Spry Content Slides but how do I stop it from flowing into the adjacent column? When I reinstall will I have duplicating labels?
    John

    If the labels still remain on the page, there is a good chance there is some code that was not entirely deleted.  To answer your second question we would need to see the code from your page to see what is going on and how to fix it.

  • BAPI for assing source of supply for purchase requisitions

    Hi,
    can any one let me know if there is any bapi or function module to assing source of supply for purchase requisitions. 
    Points will be given
    regards,
    siva prasad.

    Define fixed indicator in the source of supply , and set the source list usage of MRP to "1 "
    Below is help from sap:
    ==================================================================
    Determining the Source of Supply via the Source List
    The system first checks whether a quota arrangement has been maintained for the material, which has a validity period that covers the requirements date of the purchase requisition.
    It then checks whether only one entry exists in the source list that is relevant to MRP. The indicator for source list usage must therefore be set for a particular vendor so that purchase requisitions and delivery schedules, which are created during the planning run, are automatically assigned to this vendor. In the case of a delivery schedule, you must also have maintained a scheduling agreement for this entry.
    If you have maintained all the entries correctly, the system creates a purchase requisition with the source of supply that is recorded in the source list.

  • Access Sequence for Plant/Tax code Combination  for JTAX

    Dear All
    i want to create a new access sequence for "Plant/Tax code" Combination.
    Please let me know the process for the same
    Regards
    Amey

    Hi,
    Goto- M/05.
    Create the condition table by selecting the fields Plant & Tax code.
    Assign this condition table in the Access sequence JTAX as per ur requirement.
    Create condition records (FV11) by choosing the requirec access sequence.
    Regards,
    Satpal

  • Searching for BW Front End Patch for BW 3.50 and SAPGUI 640

    Hi SDN Community
    We have recently upgraded to SAP GUI 640,
    Analyzer, Query designer and WAD are now not working i image because it needs an upgraded BW frontend patch.
    But i am trying to find the correct FEP for BW version to install for BW 350.
    I have come as far as the below link, but cannot find the FEP's. Your assistance would be greatly appreciated.
    Thank you.
    Simon
    Download BW 3.x Frontend Patches in the new
    SAP Support Portal: Software Distribution Center
    using the following path: http://service.sap.com/swdc
    Download --> Support Packages & Patches --> Entry by Application Group --> SAPNetWeaver
    --> SAP NetWeaver --> < SAP NW 04 --> Entry by Component --> Business Intelligence --> SAP BW 3.5
    --> Frontend -->

    Go to SAP Note 1006942 - BW 3.5 Frontend Patch 12 and click on the 'Download Corrections' button at the top of the screen.
    Hope this helps...
    Bob

  • Where to find the source code examples for a carousel JavaFX

    All references to the HOW-TO JavaFX lead to www.javafx.com
    and forwarded to the
    http://www.oracle.com/technetwork/java/javafx/overview/index.html,
    and there is no such examples. Who knows where they are

    Download Samples from
    => http://www.oracle.com/technetwork/java/javafx/downloads/index.html
    The Display Shelf example is a inside the Ensemble sample and is what you are looking for.
    Build and run from the downloaded sample source or run online from
    => http://www.oracle.com/technetwork/java/javafx/samples/index.html
    Choose Samples | Graphics | Display Shelf
    From there you can either Save Netbeans Project or Copy Source.
    If there are broken or misleading documentation references, email the list of pages containing the broken links and what they link to: [email protected]

Maybe you are looking for