Search This Blog

Showing posts with label GIT. Show all posts
Showing posts with label GIT. Show all posts

Thursday, 6 April 2017

Continuous Integration

Continuous Integration
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. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. 
The basic idea behind the continuous integration is to ensure that there are no compilation issues at the end of the day by numerous check ins made by the developers in a team. Also, this would enable to identify any compilation issues at the early stages of the development process.
In this process, all the developers’ activities are collaborated and merged at the central system.  The main aim in this process is to eliminate the “integration problems”. Each and every integration is automatically built, deployed and tested thoroughly.
The main aim of CI is to prevent integration problems.
Continuous integration is the practice of frequently integrating one's new or changed code with the existing code repository which should occur frequently enough that no intervening window remains between commit and build, and such that no errors can arise without developers noticing them and correcting them immediately. 
Rather than a periodically scheduled build, in CI the normal practice is to trigger these builds by every commit to a repository.

Best Practices of CI
1.      Maintain a proper code repository.
2.      Automate the build process.
3.      Ensure every developer commits the files to the main stream every day.
4.      Every commits made should be built.
5.      Results of the build should be made transparent, so that all the developers will be aware of the quality of the build every day.
6.      Test the build in a production look-like environment.
7.      Broken builds should be fixed immediately.
8.      Everyone should be able to get the latest build from the main stream.
9.      Automate the deployment process.
 Advantages of CI
1.      Integration bugs are detected early and are easy to track down due to small change sets. 
2.      Avoids last-minute chaos at release dates
3.      Constant availability of a "current" build for testing, demo, or release purposes.
4.      Frequent code check-in pushes developers to create modular, less complex code
5.      Enforces discipline of frequent automated testing.
6.      Immediate feedback on system-wide impact of local changes


Thursday, 16 March 2017

What is GIT

What is GIT


Git is the most widely used modern version control system in the world today. Git is a  actively maintained open source project. A lot of software projects rely on Git for version control, including commercial projects as well as open source. Git works well on a wide range of operating systems and IDEs (Integrated Development Environments). Git is an example of a DVCS (Distributed Version Control System).
Git has been designed with performance, security and flexibility in mind.

Performance
Committing new changes, branching, merging and comparing past versions are all optimized for performance.

Security
Git has been designed with the integrity of managed source code as a top priority. The content of the files as well as the true relationships between files and directories, versions, tags and commits, all of these objects in the Git repository are secured with a cryptographically secure hashing algorithm called SHA1.

Flexibility
Git is flexible in several respects, in support for various kinds of nonlinear development workflows, in its efficiency in both small and large projects and in its compatibility with many existing systems and protocols.Git has been designed to support branching and tagging and operations that affect branches and tags are also stored as part of the change history

Version control with Git
The main reasons why version control with Git is preferred over other Version Control

Git is good
Git has the functionality, performance, security and flexibility that most teams and individual developers need.

Git is in fact a standard
Git is the most broadly adopted version control tool. Vast numbers of developers have Git experience.
The predominance of Git also means that many third party software tools and services are already integrated with Git including IDEs, and project tracking software, JIRA, and code hosting service, Bitbucket.

Git is a quality open source project

Git is a very well supported open source project with over a decade. Git enjoys great community support and a vast user base. Documentation is excellent and plentiful, including books, tutorials and dedicated web sites. 

Tuesday, 14 March 2017

What is Version Control

What is Version Control?

Version control systems are software tools that help a software development team manage changes to source code over time. Version control software keeps track of every modification to the code. If a mistake is made, developers can turn back and compare earlier versions of the code to help fix the mistake while minimizing disruption to other team members.

Software developers working in teams are continually writing new source code and changing existing source code. The code is typically organized in a folder structure. One developer on the team may be working on a new feature while another developer fixes an unrelated bug by changing code, each developer may make their changes in several parts.

Version control helps teams track every individual change by each contributor and help prevent concurrent work from conflicting. Changes made in one part of the code can be incompatible with those made by another developer working at the same time. Good version control systems facilitate a smooth and continuous flow of changes to the code.

Teams that do not use any form of version control often run into problems like not knowing which changes that have been made are available to users or the creation of incompatible changes between two unrelated pieces of work that must then be untangled and reworked. Version control software is an essential part of the every-day of the software team's professional practices.

Benefits of version control
Developing software without using version control is risky. Version control can also enable developers to move faster and it allows teams to preserve efficiency and agility.

The primary benefits of a Version Control System are as follows. 

Ø  A complete long-term change history of every file : Every change made by many individuals to file or files is available. Changes include the creation and deletion of files as well as edits to their contents. Having the complete history enables going back to previous versions to help in root cause analysis for bugs and it is crucial when needing to fix problems in older versions of software.

Ø  Branching and merging : Creating a "branch" in VCS tools keeps multiple streams of work independent from each other while also providing the facility to merge that work back together, enabling developers to verify that the changes on each branch do not conflict. 

Ø  Traceability : Being able to trace each change made to the software and connect it to project management and bug tracking software such as JIRA, and being able to annotate each change with a message describing the purpose and intent of the change can help not only with root cause analysis and other forensics.


While it is possible to develop software without using any version control, doing so subjects the project to a huge risk that no professional team would be advised to accept. So the question is not whether to use version control but which version control system to use.