You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

 Subversion

Git

 
 

The full Subversion documentation can be found here

http://svnbook.red-bean.com/en/1.5/

The full git documentation can be found here

https://git-scm.com/documentation

 
Pre Conditions   
 

Subversion Server

You find the documentation „how to install a subversion server“ here

http://svnbook.red-bean.com/en/1.8/svn.serverconfig.html

Git central repository.

You can create a central repository with

Navigate to a folder live where you want to locate the git repository

e.g. c:\temp\git_repro\live

git --bare init

 
 SVN client installed on local machinegit client installed on local machine 
 

Subversion Projectarchive

  
All files to be deployes are located in the live folder of a JobScheduler Installation.

Creating a working copy in your live folder from the projectarchive

Please note that after the import the live folder is not a working copy.

Creating a working copy in your live folder from the git repository

 
 

svn import -m "initial load" --username myUser --password myPassword

"C:\sos-berlin.com\jobscheduler\scheduler_current\config\live"

http://subversion.sos/svn/myprocject

navigate to your config folder

move all files to a temporary folder

git clone c:\temp\git_repro\live

move all files back to the live folder

git add *

git commit -m "initial load"

git push origin master

 

 

The files are now in the subversion projectarchive. You can verify this with the command

svn list http://subversion.sos/svn/sos/test/ur

The files are now in the git repository. You can verify this with cloning the repository to one more folder

git clone c:\temp\git_repro\live


 
 

Delete the files from the live folder

Execute the command checkout to get the files from the projectarchive to the live folder

svn checkout http://subversion.sos/svn/myprocject

"C:\sos-berlin.com\jobscheduler\scheduler_current\config\live"

  
Working with the projectarchive

You can have several working copies of the live folder (see command checkout).

To synchronize changes in the working copy with the project folder there are two commands

You can have several working copies of the live folder (see command clone).

To synchronize changes in the working copy with the project folder there are three commands

 
 

Read the actual version from the projectarchive (update)

The update command reads changes from the projectarchive and merge them into the

working copy.

svn update C:\ jobscheduler\scheduler_current\config\live

  
 

The commit command writes changes from the working copy to the projectarchive

Please note that before commiting changes a update command is neccessary

especially when a commit from another working copy has been executed.

svn commit C:\ jobscheduler\scheduler_current\config\live

  

Making changes

Changes are made in the working copy using JOE or a text editor software.

When all changes for certain approach has been done the changes can be commited to the projectarchive. Before doing the commit the working copy has to be actualize with changes from other working copies by executing the update command. During the update it is possible that a conflict will be detect. That means that in your working copy is a change and also in another working copy in the same file and the same line a change has been done. If so, you have to resolve the conflict before proceeding. It is neccessary to apply a commit message with the commit command.

  1. update
  2. make changes
        1. update
  3. commit
  
Deployment

There are two possible architectures to organize the deployment

 

  1. The live folders of int and prod also are working copies

  2. The live folders of int and prod are simple folders without assignment to a projectarchive

 

  1. When int and prod are working copies, the deployment will be done by executing an update command on the int/prod live folder.

    1. Changes can be done directly in the int/prod live folders. They will be merged with the changes coming from dev

    2. This approach is more risky as the merged changes are not testet. The configuration will be merged directly in int/prod live folder and has never been existed in this version before.

    3. For a more save and stable environment, it should be forbidden to make changes directly in int/prod live folders.

  2. When int and prod are simple folders the deployment will be done by executing the export command from dev to int/prod
    svn export http://subversion.sos/svn/ myprocject C:\int\live

    1. Changes that have been made directly in the int/prod folders will be overwritten

    2. In case of an urgent, quick change directly in int/prod, the change also has to be done in dev to make it persistent.

    3. Working with this approach is more save as

      1. Changes in int/dev normally will not be made

      2. The configuration that is deployed has been testet in dev.

 

  
    

 

 

Consider environment specific parameters and configurations.

 

When doing the deployment it is possible that parameter value are not valid in int/prod environment. E.G. the name of files, folders, printers etc.


Use environment variables that have different values in int, prod and dev. For

  • File order sources
  • Directories in file names


<job_chain name="job_chain1">
<file_order_source directory="${file_input_dir}\input" regex=".*"/>
...
</job_chain>

Use include files for specifying parameter values


<order>
<params ><include live_file="paramfile" node=""/>
..
</order>

 

and the file paramfile

<params >

<param name="par1" value="value1"/>

<param name="par2" value="value2"/>

</params>

 

 

Use different script include files for dev prod and int

 

<job order="yes">

 

<script language="shell">

<include live_file="include_scriptfile.sh"/>

</script>

 

<run_time />

</job>

 

How to handle different include files for parameters and scripts

  • create a folder include_files (parallel to the live folder)
  • create subfolders for dev, int and prod
  • create the same subfolders under dev, int and prod as in the live folder
  • create the include files in the subfolders for dev, int and prod
  • create a projectarchive wich contains the folder include_file
  • create a working copy with the import, delete and checkout command (see above).
  • When committing the include_files folder you should also commit the live folder (and vica versa) to have consistency between both folders.
  • When deploying to int export the include_files/int folder to the live folder at int
  • When deploying to prod export the include_files/prod folder to the live folder at prod

As you have a working copy in the live folder of dev, the include files from dev will be deployed when exporting the dev live folder. But with the second export from the include_files folder, the dev files will be overwritten with the correct version. An alternative approach is that also the live folder in dev is not a working copy but will be actualized with an export command from the dev working copy.

 

The quality of the dev environment

When having some test configuration items in the development environment you should take care of not commiting them to the repository. To achieve this, no add command should be executed on this file. You also can add these files to a ignore list (available with git and subversion). You should take in mind that every configuration item that has been committed to the repository will be in int or prod environment sometimes later.

 

 

  • No labels