• About

Conscious IT

~ Achieving A Mature Software

Conscious IT

Tag Archives: version control

What I’ve Been Reading – 01

01 Saturday Oct 2016

Posted by ralphavalon in Curiosities, General, Software Development, Software Development Process

≈ 1 Comment

Tags

mobile, performance, version control, what ive been reading

Hi guys, what’s up? I’ll share with you some things that I’ve been reading lately and I think relevant and worthy to take a look:

Liquibase

  • Liquibase is a database version control tool. Supports changesets, branching and merging and also has traceability. It supports the following file formats: XML, JSON, YAML and SQL. Here is an example taken from the official site:

--liquibase formatted sql

--changeset nvoxland:1
create table person (
id int not null primary key,
firstname varchar(80),
lastname varchar(80) not null,
state varchar(2)
);

--changeset nvoxland:2
alter table person add column username varchar(8)

--changeset nvoxland:3
create table state AS SELECT DISTINCT state AS id FROM person WHERE state IS NOT NULL;
alter table state modify id char(2) NOT NULL;
alter table state add primary key(id);
alter table person add constraint fk_person_state foreign key (state) references state(id);

  • State of the Study: I intend to use, first to test and use the features. If I like, I want to use whenever I can.
  • My Opinion About the Subject: Anything that makes easier database maintenance is valid. Before this, I only used Flyway, but I will test Liquibase.

My Reference Link (BR): https://dicasdolampada.wordpress.com/2012/03/19/evoluindo-o-banco-de-dados-com-o-liquibase/

My Reference Link (EN): https://blog.codecentric.de/en/2015/01/managing-database-migrations-using-liquibase/

Ionic vs React Native

  • Ionic and React Native are two frameworks that promise to develop hybrid mobile applications using JavaScript (Ionic using Angular base, and the React Native using React and its concepts). As I know little of both, I am evaluating pros and cons to know what I should study.

Continue reading →

Advertisements

ALM – Application Lifecycle Management

14 Saturday May 2016

Posted by ralphavalon in General, Software Development, Software Development Process

≈ 2 Comments

Tags

alm, application lifecycle development, continuous integration, development, devops, good-practices, process, software, version control

What is ALM?

A: Tools that manage the application lifecycle. Tools that help from creation to application deployment.

It is common to see ALM divided into the following categories:

  • Requirements Management
  • Configuration and Change Management
  • Build Management
  • Test Management

Knowing this, you need to know what is ESSENTIAL and what will be USEFUL to your problem. Here is my opinion on key ALMs.

  • Version Control Tool (Git, SVN, etc.)
  • Continuous Integration Tool (Jenkins, Bamboo, etc.)
  • Build Tool (Maven, Gradle, etc.)
  • Task Management Tool (Redmine, JIRA, etc.)
  • Testing Tool (JUnit, Selenium, etc.)

Many people ask why I do not put Documentation Management Tool as ESSENTIAL and the answer is quite simple:

  • Not every application needs documentation.

“What? You are against documentation? Application without documentation?” Continue reading →

Continuous Integration

07 Saturday May 2016

Posted by ralphavalon in General, Software Development Process

≈ 2 Comments

Tags

build, continuous integration, devops, good-practices, patterns & practices, process, software, tdd, test-driven development, version control

What is Continuous Integration?

R: “Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily – leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.” – (Martin Fowler)

This allows the detection of integration errors as soon as possible, such as compilation errors, notifications of the management system configuration and errors reported by the test suite.

“Continuous Integration is an attitude, not a tool.” – (James Shore)

Main Associated Practices

  • TDD
  • Version Control
  • Automated Build

Key Concepts

  • Maintain a single source repository
  • Automated build process
  • Self-testable Build
  • Everyone should save the changes (commit) daily
  • Every commit should build on an integration machine
  • Keep the build fast
  • Run the tests in a similar environment to the production environment
  • Make it easy for anyone to get the last executable
  • Ensure that anyone can see what’s happening
  • Automated deployment

Prerequisites to have Continuous Integration

  • Source repository with version control
  • Solid set of tests
  • Automated build
  • Homologation environment

Benefits

  • Improved code quality.

Using code coverage tools, among other tools, code quality tends to grow.

  • Improved feedback.

Continuous integration shows constant and demonstrable progress.

Continue reading →

Version Control

23 Saturday Jan 2016

Posted by ralphavalon in General, Software Development Process

≈ 3 Comments

Tags

continuous integration, devops, process, version control

What is Version Control?

A: “Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.” (Source: git-scm)

To sum up: It’s possible to view (and recover) the changes of a file throughout its development. Each commit¹ stores the changes made to the file and has an associated version with it. The commit saves the current state of the file in this version.

Among the benefits of using a version control system, we have:

  • ability to restore previous versions of the system
  • code comparison
  • management of changes
  • code integration

How it works:

  • There’s a central server (called Repository) that is responsible for versioning system
  • This central repository enables multiple clients can access, view, edit and send new codes if needed.

An example of a simple flow with two persons:

  • One Person creates a file with content My Program
  • One Person commits to Central Repository

CVS01_en

 

  • Other Person downloads the files that are in Central Repository
  • My Program was on Central Repository

CVS02_en

 

  • On this moment, both One Person and Other Person have the file with content My Program locally, and the file also exists on Central Repository
  • Other Person changed the contents of My Program to My Edited Program
  • Other Person commits to Central Repository

CVS03_en

  • On this moment, the current and latest version of the file is the one with content My Edited Program
  • One Person changed the version that he had (My Program) to My Program With My Edits
  • One Person tries to commit
  • The version control system warns that the version that One Person has isn’t the latest, so he cannot commit
  • One Person needs to download the latest version of the file

CVS04_en

  • There are differences between the latest version of the file and the version that One Person wants to commit
  • These differences can be handled automatically by the version control system, or if not possible, manually
  • Once downloaded the latest version and resolved the differences, One Person can commit normally

CVS05_en

Among some of the tools for centralized version control we have: CVS, Subversion (SVN), Git, among others. No, Dropbox is not a version control system. Currently, SVN and Git seems to be the most commonly used tools.

¹ Commit: Permanently save all changes to the desired file

References: Integração contínua: uma introdução ao assunto (pt-br)

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 15 other followers

Recent Posts

  • Last News
  • Curiosities: Default ports
  • Guide – Spring MVC
  • Guide – Spring Boot (Part 02)
  • Guide – Spring Boot (Part 01)

Recent Comments

Guide – Spring… on Guide – Spring Boot (Par…
Guide – Spring… on Guide – Spring Boot (Par…
ralphavalon on SOLID – Advanced Object…
Gal on SOLID – Advanced Object…
Guide – Spring… on Guide – Spring Boot (Par…

Archives

  • October 2017
  • September 2017
  • August 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • December 2016
  • November 2016
  • October 2016
  • September 2016
  • August 2016
  • July 2016
  • June 2016
  • May 2016
  • April 2016
  • March 2016
  • February 2016
  • January 2016

Categories

  • Curiosities
  • General
  • Software Development
  • Software Development Process

Meta

  • Register
  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.com
Advertisements

Blog at WordPress.com.

Cancel
Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Cookie Policy