Merge code concept

Hi All,
         I need help on Merge code concept in BW.What exactly it does?,Is there any scope of performance tunning while merging two ODS's?.Any document explaining about it will also do.
Waiting for your quick responces...
Thanks,
Rahul.

Thanks for reply,
                        BW has an new concept called "Merge code".It will merge the data of two source ODS's into one single target ODS.This will have a routine in update rules which does this job. I wanted to know how this merge code works and whats the exact concept behind it and also is there any scope of optimising the merge process if we needed.
Thanks,
Rahul.

Similar Messages

  • Merging code in jdeveloepr 11g P2

    Hi All,
    Can any body point to any link where the ADF code merging steps are neatly documented? I would like to merge the code developed by multiple developers for a single complex screen. Each developer is developing/generating individual panel related code. Apart from general code merging problems I am also facing difficulty with UI control Id problem as different UI controlId name are same for different panel which are developed by different developer. Afraid to say that I don’t see any documentation on merging of ADf code, I feel oracle should think in direction and provide some merging tool with Jdeveloper.
    Please let me know your thoughts
    Any views/thought will be appreciated.
    Cheers
    raky

    Hi,
    for sure you used source code control. So to get all your developers work into one application. just check out the project on a single machine. Subversion is what we promote in JDeveloper 11 - but CVS works as well.
    Note that a "merge" utility makes no sense because you wont be able to resolve conflicts in time and probably end up with a messed up application. If you didn't use source code control for team development the consider doing so in the future (the rest of the IT world is doing it as well).
    I am not sure we want to encourage people to use merge tools.
    Frank

  • [c++] merge code in 3 svn snapshots

    hi,
    i'm finishing a university project of mine and i've got problems with my sourcecode. its somewhat complicated. i have my code in svn repository a, this code is (partially) a fork of programm x in repository b. of course x was developed further over the last few months and so there is also a new revision of x, we may call c.
    my strategy to bring my code and the official code of x in sync looks something like this:
    diff a and b to get a list of files i changed
    diff changed_files of a and c to get a list of "conflicts"
    finally merge by hand...
    doesn't look like an exciting thing to do. so the purpose of my post here is to find out if there is some kind of tool available in the open source world to help me merging the code?

    First of all make sure that you understand the code. If not, it's going to be a mess.
    Then I advise using a tool like meld or kdiff3 to merge the files graphically, it's imho the most comfortable and error-free way to do so.

  • Please help with merging code

    With the help of this forum I have a program that decrypts a password that was previously encrypted. I'm trying to encorporate this decrypt code into a program of mine and having a problem with an undeclared Exception. Can someone help?
    Here's the short decrypt program that works:
    import java.io.*;
    import java.security.*;
    import javax.crypto.*;
    import sun.misc.*;
    public class DecryptPassword
         public static void main(String args[]) throws Exception
              if(args.length<1)
                   System.out.println("Usage : DecryptPassword text");
                   return;
              Security.addProvider(new com.sun.crypto.provider.SunJCE());
              Key key;
              try
                   ObjectInputStream in=new ObjectInputStream(new FileInputStream("des.key"));
                   key=(Key)in.readObject();
                   in.close();
              }      catch(FileNotFoundException fnfe)
                        KeyGenerator generator= KeyGenerator.getInstance("DES");
                        generator.init(new SecureRandom() );
                        key=generator.generateKey();
                        ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("des.key"));
                        out.writeObject(key);
                        out.close();
              Cipher cipher=Cipher.getInstance("DES/ECB/PKCS5Padding");
                   cipher.init(Cipher.DECRYPT_MODE,key);
                   BASE64Decoder decoder = new BASE64Decoder();
                   byte[] raw = decoder.decodeBuffer(args[0]);
                   byte[] stringBytes = cipher.doFinal(raw);
                   String result = new String(stringBytes,"UTF8");
                   System.out.println(result);
    }Now here's the code snippet. I call this function from another part of the program with DecryptPassword();
         public void DecryptPassword()
              Security.addProvider(new com.sun.crypto.provider.SunJCE());
              Key key;
              try
                   ObjectInputStream in=new ObjectInputStream(new FileInputStream("des.key"));
                   key=(Key)in.readObject();
                   in.close();
              }      catch(FileNotFoundException fnfe)
                        KeyGenerator generator= KeyGenerator.getInstance("DES");
                        generator.init(new SecureRandom() );
                        key=generator.generateKey();
                        ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("des.key"));
                        out.writeObject(key);
                        out.close();
              Cipher cipher=Cipher.getInstance("DES/ECB/PKCS5Padding");
              cipher.init(Cipher.DECRYPT_MODE,key);
              BASE64Decoder decoder = new BASE64Decoder();
              byte[] raw = decoder.decodeBuffer(EncryptedRemedyPassword);
              byte[] stringBytes = cipher.doFinal(raw);
              String result = new String(stringBytes,"UTF8");
              EncryptedRemedyPassword = result;
              //System.out.println(result);
         }Problem is, what do I do with the "throws Exception" that is a part of the Main program in the first set of code? I assume that's the problem.
    Thanks.
    James

    Please don't write the name of your method with an uppercase.
    There is two ways to solve your problem :
    1) you declare that your method throws an Exception like this :
    public void decryptPassword() throws Exceptionbut, for each call of this method you will have to put it in a try{} catch(Exception e) {} clause.
    2) you put all the code of your method in a try clause like this :
    public void decryptPassword() {
        try {
             // all the code
        catch(Exception e) {
            System.out.println(e);
    }I hope this helps,
    Denis

  • QR code date merge error.

    When trying to create a qr code data merge in indesign, I cannot seem to create actual QR codes.
    Instead they are previewing as text.
    How can I create a QR data merge code with QR codes?

    No real tuts that I am aware of. Here is a link to a sample set of files.
    In the ZIP is an ID file, the merge text (tab delimited),4 images for the merge (hey, it's Disney character themed), and most importantly, an Excel file. In the Excel file, the last column is a calculated field that pulls together info from the other fields and adds the strings (text) that is needed.
    I no longer have access to ID 2014. I used the trial version to help someone else do this and to prepare this sample. I suspect I can answer your questions without being able to actually see the ID file should you have any.
    Take care, Mike
    Dropbox - qr-vcard-disney-sample.zip

  • Merging audio in JMF.

    I am developing a voice conferencing server using JMF. For this i have to take audio from various datasources and merge them. i started with two audio streams from files and used the Manager.createMergingDataSource to create a merger. Then i play this merged datasource using a player. This works fine. but when i check the output bitrate using the BitRateControl for the player, it doubles when the second datasource arrives. However doesn't merging/mixing mean that the output bandwidth should remain constant.
    I am not clear with this concept so could someone please help me with this.
    Thanks in advance.
    Tabrez

    excuse me, could you share merging code?
    My program mixes two DataSources into one, but it contains both of them, so is being transmitted through two connections. Does your program mix DataSources into one exactly stream, not just one DataSource?

  • How to add company code data to BP in SAP CRM

    Hi All
    I have a problem replicating BP from CRM to R3,the error coming is "Fill in the required entry fields".
    While debugging the error i came to know that Company Code data is not given from CRM side which is mandatory in R3.
    Actually the Company code data is kept mandatory at ABAP level due to the Client requirement.
    Now how can i add the company code data to BP so that this errors is resolved.As far as my knowledge goes there is no provisions for company code data in CRM ,now even if we keep this company code data optional in R3 ,this error is coming.
    Please suggest the way out.
    Any help will be highly appreciated.
    Regards
    Ashish

    Hi there
    Thanks for the reply,yeah i understand that there is no company code concept in CRM system.
    so,we mean by Middleware exit is the user exit at R3 side,that i understand too.
    But here scenario is different in the case that customer is not getting replicated due to the company code being kept mandatory at ABAP level in R3.
    Actually client requires the company code data to be mandatory in R3 so that customer id does not get generated in R3 without giving the company code info.
    Now due to the mandatory check on company code at ABAP level ,what happening is that we are not able to replicate the BP info to R3 because if that check was not there we would have at least pass on the BP data except the company code  and company code info would have been given in R3 itself.
    So,i believe the way out is to remove that check and place a user exit in R3 so that at least CRM data is replicated and company code will come automatically.
    Hope this will help me,if you have any better suggestion then please provide the same.
    Regards
    Ashish

  • Why we need casting in OO Concept

    Hi Gurus,
      I am new to OO ABAP. Recently I learnt about casting concept in OO-ABAP. I was curious to know what is the use of casting, what is the need to use or know casting in OO concept.
      I searched for this topic in SDN but didn't got use full answers.
    Thanks you
    Sreeni

    Hi,
    OO is a reusable code concept.
    Look for IF_PURCHASE_ORDER_MM interface and cl_po_header_handle_mm  class.
    The class was designed with this interface (and others too).
    Then, the class has the interface (methods and attributes).
    When you code:
      o_purchase_order ?= im_header.
    *(o_purchase_order type class and im_header type interface)
    You will initialize the object o_purchase_order, passing all the attributes and values from interface object im_header.
    Note that o_purchase_order has other interfaces, and to initialize theirs values you will need to do the same with their respective interfaces.
    Using casting command you will reduce effort, creating clean and quality code.

  • Use of Process code

    Hi All ,
              I know the purpose of process code which will post the data in the idoc into database.But my query is after creating function module why cant we directly link that FM in partner profile.I mean ofcourse we dont have such option, but why they introduced this proces code concept.Any special purpose???
    Regards,
    Rakesh.

    Hi Rakesh,
           Process codes will process the data existing in Idoc type.Process code are two.
    1. Out bound process code -> IDOC_OUTUT_IDOCTYPE
    2. Inbound process code-> IDOC_INPUT_IDOCTYPE.
    Based on Outbound and Inbound function modules data will process.
    Thanks
    Prakash

  • "Merge"/combine different iViews on a page

    Hello,
    I wish to realise the following requirement:
    Imagine 2 users A and  B.
    We have 3 iViews i1, i2 and i3.
    i1 is assigned to role1, i2 is assigned to role2, i3 is assigned to role3.
    User A has role1 and role3, user B has role2 and role3.
    If  user A is logged in, he should see one page with iView i1 and i3.
    If  user B is logged in, he should see one page with iView i2 and i3.
    So I have to combine different iViews on a page depending on the roles.
    Is this possible?
    Kind regards.

    Hi,
    Try This
    1.Apply Role merging Concept  with  R1andR3 and Assign to User 1
    now user 1 can see iview1 andiview3
    2.same as above Assign R2andR3 roles to User2 with merging role concept
    Merging role Concept:
    Suppose For User one
    Role1 - Iview1,
    Role3- Iview3
    set the MergeID property of the 2 Roles with Common Id(like id should be "p" for both roles)
    set the Merge priority  Ex for role1 is 5 and for role3 is 2
    then the role with less priority will be displayed to the particular user and both the iviews will be displayed
    Hope this will hep you
    Thanks
    parameshwari
    Edited by: parameshwari on Feb 15, 2012 11:26 AM

  • Pages and Address book Merge

    Hi
    I have a simple pages doc with basic merge fields for contact and address details. It all works fine when dragging and dropping address cards from address book when those details are located "on my mac" however the merge fields don't recognise the info when I drag and drop a card from a contact stored in either my hosted exchange address book or my shared cardDAV address book.
    When I drag a card from a contact to my pages doc the information reverts back to the merge codes if that contact is being dragged from an address book other than the one located on my mac.
    Can anyone shed any light on if this is possible?
    Thanks

    According to Apple:
    http://www.apple.com/server/macosx/features/addressbook-server.html
    This is all supposed to just work.
    If you find that it isn't:
    +Menu > Pages > Provide Pages Feedback+
    Also as Snow Leopard is a recent install you are entitled to Apple's support. Contact them and see what they can offer.
    I don't know what country you are in but search for the local phone number starting here:
    http://www.apple.com/support/contact/
    I highly recommend getting AppleCare with your computer as this also offers software support for 3 years and in my experience has been well worth the money.
    Peter

  • Audio merge solution while capturing?

    Hi guys,
    I am trying to mix the capturing audio with another audio file. For that i used the Merge.java code from JMF solutions.
    I did some modification in the code. What i did is
    created three processors one for capturing audio second for background audio file and third for output processor as used in the merge code.
    I am stopping and closing the output processor when i want to stop the capture audio. The output audio file contains merged audio but with whole background audio file.
    I want the output file upto I stops the capture. How should i do this?
    Thanks in advance.
    Edited by: swapnilwarekar on Oct 24, 2009 5:28 AM

    Hey folks,
    will you help me please?
    I am trying to mix the capturing audio with another audio file. For that i used the Merge.java code from JMF solutions.
    I did some modification in the code. What i did is
    created three processors one for capturing audio second for background audio file and third for output processor as used in the merge code.
    I am stopping and closing the output processor when i want to stop the capture audio. The output audio file contains merged audio but with whole background audio file.
    I want the output file upto I stops the capture. How should i do this?
    here is my code.
    public class CaptureMerge extends JFrame implements ControllerListener, DataSinkListener, ActionListener {
         JButton capture;
         JButton stop;
         Processor captureProcessor, musicProcessor, outputProcessor;
         Player musicPlayer;
         CaptureDeviceInfo di;
         DataSource captureDataSource, musicDataSource, mergDatasource;
         DataSource outputDataSource;
         DataSink outputDataSink;
         MediaLocator outputLocator;
         public CaptureMerge(){
              setSize(100,100);
              setLocation(500, 300);
              setLayout(new FlowLayout());
              capture=new JButton("Capture");
              add(capture);
              capture.addActionListener(this);
              stop = new JButton("Stop");
              add(stop);
              stop.addActionListener(this);
              setVisible(true);
         @Override
         public void controllerUpdate(ControllerEvent ce) {
              if (ce instanceof EndOfMediaEvent) {
                   outputProcessor.close();
                   outputProcessor = null;
                   outputDataSink.close();
                   outputDataSink=null;
              else if(ce instanceof ControllerErrorEvent){
                        outputProcessor.close();
                        outputProcessor = null;
                        outputDataSink.close();
                        outputDataSink = null;
              else if(ce instanceof StopByRequestEvent){
                   outputProcessor.close();
                   outputProcessor = null;
                   outputDataSink.close();
                   outputDataSink = null;
         @Override
         public void dataSinkUpdate(DataSinkEvent dse) {
              if (dse instanceof EndOfStreamEvent) {
                   try {
                        outputDataSink.stop();
                        outputDataSink.close();
                   } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
              } else if (dse instanceof DataSinkErrorEvent) {
                   try {
                        outputDataSink.stop();
                        outputDataSink.close();
                   } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
         @Override
         public void actionPerformed(ActionEvent e) {
                   if(e.getSource() == capture){
                        startCapture();
                   else if(e.getSource() == stop){
                        stopCapture();
         public static void main(String[] args){
              new CaptureMerge();
         public void startCapture(){
              Vector deviceList = CaptureDeviceManager.getDeviceList(new AudioFormat(AudioFormat.LINEAR, 44100, 8, 2));
              if (deviceList.size() > 0) {
                   // Get this equipment CaptureDeviceInfo examples.
                   di = (CaptureDeviceInfo) deviceList.firstElement();
              } else
                   // Not met (linear, 44100Hz, 16-bit, stereo audio.) Audio equipment,
                   // exit.
                   System.exit(-1);
              try {
                   ProcessorModel pm1 = new MyProcessorModel(di.getLocator());
                   captureProcessor = Manager.createRealizedProcessor(pm1);
                   captureProcessor.start();
                   captureDataSource = captureProcessor.getDataOutput();
                   URL mediaURL = null;
                   JFileChooser fileChooser = new JFileChooser();
                   if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
                        try {
                             mediaURL = fileChooser.getSelectedFile().toURL();
                        } catch (MalformedURLException e) {
                             // TODO Auto-generated catch block
                             e.printStackTrace();
                   } else {
                        System.exit(0);
                   MediaLocator playingMedia = new MediaLocator(mediaURL);
                   ProcessorModel pm2 = new MyProcessorModel(playingMedia);
                   musicProcessor = Manager.createRealizedProcessor(pm2);
                   musicDataSource = musicProcessor.getDataOutput();
                   musicPlayer = Manager.createRealizedPlayer(mediaURL);
                   musicProcessor.start();
                   musicPlayer.start();
                   mergDatasource = Manager.createMergingDataSource(new DataSource[]{captureDataSource, musicDataSource});
                   mergDatasource.connect();
                   mergDatasource.start();
                   ProcessorModel ouputModel = new MyPMOut(mergDatasource);
                   outputProcessor = Manager.createRealizedProcessor(ouputModel);
                   outputDataSource = outputProcessor.getDataOutput();
                   try {
                       outputLocator = new MediaLocator("file:/d:/audio/MWAudios/sw3.mov");
                       outputDataSink = Manager.createDataSink(outputDataSource,
                                                outputLocator);
                       outputDataSink.open();
                   } catch (Exception exce) {
                       System.err.println("Failed to create output DataSink: " + exce);
                       System.exit(-1);
                   outputProcessor.addControllerListener(this);
                   outputDataSink.addDataSinkListener(this);
                   outputDataSink.start();
                   outputProcessor.start();
              } catch (NoProcessorException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
              } catch (CannotRealizeException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
              } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
              } catch (NoPlayerException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
              } catch (IncompatibleSourceException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
         public void stopCapture(){
              outputProcessor.stop();
              this.dispose();
              System.exit(0);
          class MyProcessorModel extends ProcessorModel {
                   MediaLocator inputLocator;
                   public MyProcessorModel(MediaLocator inputLocator) {
                       this.inputLocator = inputLocator;
                   public ContentDescriptor getContentDescriptor() {
                       return new ContentDescriptor(ContentDescriptor.RAW);
                   public DataSource getInputDataSource() {
                       return null;
                   public MediaLocator getInputLocator() {
                       return inputLocator;
                   public Format getOutputTrackFormat(int index) {
                       return null;
                   public int getTrackCount(int n) {
                       return n;
          class MyPMOut extends ProcessorModel {
                   DataSource inputDataSource;
                   public MyPMOut(DataSource inputDataSource) {
                       this.inputDataSource = inputDataSource;
                   public ContentDescriptor getContentDescriptor() {
                       return new FileTypeDescriptor(FileTypeDescriptor.QUICKTIME);
                   public DataSource getInputDataSource() {
                       return inputDataSource;
                   public MediaLocator getInputLocator() {
                       return null;
                   public Format getOutputTrackFormat(int index) {
                       return null;
                   public int getTrackCount(int n) {
                       return n;
    Thanks,
    Swapnil
    Edited by: swapnilwarekar on Oct 25, 2009 11:18 PM

  • Cannot merge versioned instance after flush, getting OptimisticLockExceptio

    Using EclipseLink 2.0.2 I cannot merge versioned object after flush, getting OptimisticLockException.
    I get this:
    MergeManager.mergeChangesOfCloneIntoWorkingCopy(Object) line: 490     
    MergeManager.mergeChanges(Object, ObjectChangeSet) line: 267     
    RepeatableWriteUnitOfWork(UnitOfWorkImpl).mergeCloneWithReferences(Object, MergeManager) line: 3523     
    RepeatableWriteUnitOfWork.mergeCloneWithReferences(Object, MergeManager) line: 301     
    RepeatableWriteUnitOfWork(UnitOfWorkImpl).mergeCloneWithReferences(Object, int, boolean) line: 3483     
    RepeatableWriteUnitOfWork(UnitOfWorkImpl).mergeCloneWithReferences(Object, int) line: 3457     
    RepeatableWriteUnitOfWork(UnitOfWorkImpl).mergeCloneWithReferences(Object) line: 3438     
    Any known workaround?
    After the flush the versioned object version has increase of one, then the merge code compare with the increased version; however, the original version is still available in ObjectChangeSet.initialWriteLockValue.
    Since flush is an automatic thing depending of states that change often, even for similiar use case, it is expected to be transparent, so should have no effect on merge. In other words, functionality should be unchanged by the trigger of flush or by the use of other technique to get the right data like by using conform in memory.

    My understanding is that the behavior is incompatible with the old functionality of supporting multiple merges, which by definition would always give OptimisticLockException.
    Extract from: http://www.oracle.com/technology/products/ias/toplink/doc/1013/main/b13698/oracle/toplink/sessions/UnitOfWork.html
    setShouldNewObjectsBeCached
    public void setShouldNewObjectsBeCached(boolean shouldNewObjectsBeCached)ADVANCED: By default new objects are not cached until the exist on the database. Occasionally if mergeClone is used on new objects and is required to allow multiple merges on the same new object, then if the new objects are not cached, each mergeClone will be interpretted as a different new object. By setting new objects to be cached mergeClone can be performed multiple times before commit. New objects cannot be cached unless they have a valid assigned primary key before being registered. New object with non-null invalid primary keys such as 0 or '' can cause problems and should not be used with this option.
    I believe the current behavior come from Hibernate that have imposed many of their sematic/anti-patterns to JPA. Since Hibernate team have pushed a lot open session pattern, the current behavior is more likeable for them.
    Ideally both behaviors should be supported, and supporting multiple merges and flush followed by merge should be the default.

  • LiveCyle Forms and LiveCycle Designer - Merging data

    Hello,
    I´m using the following products:
    Adobe Professional/Reader/Livecycle Designer = 8
    LiveCycle FormServer (Forms) = 7.0
    My questions are about using livecycle forms with livecycle Forms. I think this is the right forum because the functionality I´m getting seems to be more designer related.
    The goal: merge data with template and execute some code (server side) while letting the template dynamic at client side.
    1) Merge a xml file with a xdp file
    The data is well merged. The code is executed at client and at server side.
    2) Merge a xml file with a dynamic 8 pdf file
    I get this message:
    To view the full contents of this document, you need a later version of the PDF viewer. You can upgrade
    to the latest version of Adobe Reader from www.adobe.com/products/acrobat/readstep2.html
    For further support, go to www.adobe.com/support/products/acrreader.html
    I think this is "normal" because the version of LiveCycle Forms I´m using is 7.0. But if I want to work with pdf 8 files, what is the right version of Livecycle Forms? Do I need to whait until version 8? Where can I update (or download trial) of the latest versions: 7.1; 7.2?
    Used:
    RenderAtClient=true
    FormPreference = "PDFForm";
    3) Merge a xml file with a dynamic 7 pdf file
    Doesn´t work: data will not merge; code will not run at the server and client side code will not work, too. However, if I try to merge the data with a dynamic pdf form created with livecycle designer 7.1, the data will merge.
    In my opinion there are incompatible differences between how a liveCycle 7.1 pdf form and a Livecycle 8 pdf form (saved with version 7) is worked by LiveCycle Forms.
    Despite this, there is some bugs in Livecycle Forms when working with PDF files. It woks well with xdp but not with pdf, maybe because a xdp is more simple to work with...
    Is this solved in other versions? Where can I get them?
    Thank you

    Forms are forms. They don't change just because you upload them. While it has nothing to do with LiveCycle as such, FC should be able to open your frorm and convert it. In any case, ask such specific questions in teh relevant product forums.
    Mylenium

  • Locating source file NAME from the executable file?

    Hi all, 
    I wrote a vi a couple of year ago (call it file.vi), and created an executable out of it using the Application Builder (call it newfile.exe). I know I renamed the file
    when I created the executable and now I cannot remember what I called the source file (I have hundreds in my PC, and cannot go through them one by one).
    Is there anyway I can get the name of the original file from the executable? Notice that I am not asking to recreate the source file from the executable, which I understand is not possible. 

    murchak wrote:
    Dennis, 
    I must come clean and admit that I don't really know what source control is. Is it a back up of source codes in one place like a server? I am not a programmer but use some LabVIEW to 
    automate a few simple tasks (mostly related to test data). I work solo in this area and there's not a group of people working on different pieces of the same project. 
    I can Google and learn what source control is. I am assuming that the concept itself is not specific to LabVIEW, unless LabVIEW has build-in funtionality for source control
    It is more like a database of files.  It keeps versions on each file so that you can revert back to a previous version if needed.  If working in a team environment, it helps to merge code and keep everybody up to date with everybody else.  But the versioning is the most important part.  I then recommend keeping the repository on a server that is regularly backed up.
    For a simple SCC software, take a look at Tortoise SVN.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

Maybe you are looking for