VCS Use Cases in New Project System

This document describes basic use cases when working with the VCS and new project system.

Author: Jan Rojcek

$Revision: 1.6 $
$Date: 2005/04/11 16:53:04 $

Changes: available in CVS

Table of Contents:

Introduction

Use cases for working with the VCS in new project system are categorized into two groups. The first group of use cases leads to setting up the IDE for work with versioning system and is described in VCS Setup Use Cases section. The second group covers use cases for actual usage of the versioning system and is described in VCS Day-to-Day Use Cases section.

Projects

Before we describe the actual use cases we need to understand different project directory structures the user performs VCS actions on. Follows a specification of different directory structures.

L1: All Files in Project Folder

[f] CVSRoot
 --[f] PetStore 
    --[p] PetStoreApp - project folder
    |  +-[f] nbproject
    |  +-[f] src
    |  +-[f] test
    |  --[b] build.xml
    --[p] PetStoreLib - project folder
       +-[f] nbproject
       +-[f] src
       +-[f] test
       --[b] build.xml

L2: External Source Folders

[f] CVSRoot
 --[f] SolitaireGame
    --[f] SolitaireApp
    |  --[p] SolitaireApp - project folder
    |     +-[f] nbproject
    |     --[b] build.xml
    |  +-[f] src
    |  +-[f] test
    --[f] SolitaireLib
       --[p] SolitaireLib - project folder
       |  +-[f] nbproject
       |  --[b] build.xml
       +-[f] src
       +-[f] test

L3: Separate External Source Folders

[f] CVSRoot
 --[f] FlightSimulator
 |  --[f] FlightSimulatorApp
 |  |  +-[f] src
 |  |  +-[f] test
 |  --[f] FlightSimulatorLib
 |     +-[f] src
 |     +-[f] test
 --[f] NBProjects
    --[f] FlightSimulator
       --[p] FlightSimulatorApp - project folder
       |  +-[f] nbproject
       |  --[b] build.xml
       --[p] FlightSimulatorLib - project folder
          +-[f] nbproject
          --[b] build.xml

L4: Nested Project Folders

[f] CVSRoot
 --[f] DataManager 
    --[p] DataManagerApp - project folder
    |  --[p] DataManagerAppCore - project folder
    |  |  +-[f] nbproject
    |  |  +-[f] src
    |  |  +-[f] test
    |  |  --[b] build.xml
    |  +-[f] nbproject
    |  +-[f] src
    |  +-[f] test
    |  --[b] build.xml
    --[p] DataManagerLib - project folder
       --[p] DataManagerLibCore - project folder
       |  +-[f] nbproject
       |  +-[f] src
       |  +-[f] test
       |  --[b] build.xml
       +-[f] nbproject
       +-[f] src
       +-[f] test
       --[b] build.xml

VCS Setup Use Cases

VCS-1: Get New NetBeans Project from VCS

The goal of this group of use cases is to get a NetBeans project from VCS so that the project sources and libraries appear in the project window and it is possible to build and run the project.

VCS-1.1: Get Multiple Dependent Projects (Application)

The user just started in a company that uses NetBeans IDE. The company uses a VCS for sharing NetBeans projects. A colleague has given the user all the details about VCS server and locations of multiple relevant projects and their libraries. The user needs to start working on those projects.

Assumed Frequency: Once a year
Part of Initial Experience: Yes

VCS-1.2: Get Independent Project

A colleague created a new NetBeans project and put it into a VCS repository. This project isn't required by any project that has already been retrieved from the repository. He has sent our user details about the location of new project. The user needs to look at the new project.

Assumed Frequency: Few times a year
Part of Initial Experience: No

VCS-1.3: Get Required Project

A colleague created a new NetBeans project, which is a required project of existing project, and put it into a VCS repository. Without this new project the existing project can't be built. He has sent our user details about location of new project. The user needs to look at the new project.

Assumed Frequency: Few times a year
Part of Initial Experience: No

VCS-1.4: Get Library

A colleague put a new library (JAR file), which is required by existing project, and put it into a VCS repository. Without this new library the existing project can't be built. He has sent our user details about location of new library. The user needs to get new library from VCS in order to build the project.

Assumed Frequency: Few times a month
Part of Initial Experience: No

VCS-1.5: Get Branched Project

A colleague created a special branch for developing a new feature. He has sent the user all the details about the branch and branched NetBeans projects. The user needs to start working on the branched projects.

Assumed Frequency: Few times a year
Part of Initial Experience: No

VCS-2: Get New Sources from VCS

The goal of this group of use case is to get the sources (not in NetBeans project structure) and libraries (JAR files) from VCS so that they appear in the project window and it is possible to build and run them.

VCS-2.1: Get Sources of Application

The user just started in a company that doesn't use a specific IDE. As NetBeans is user's preferred IDE, he would like to use it in the new company. A colleague has told the user all the details about the VCS server and application source structure in VCS repository. The user tries to use the NetBeans IDE on this application source structure.

Assumed Frequency: Once a year
Part of Initial Experience: No(?)

VCS-2.2: Get Sources of Application Module

A colleague added sources of a new application module into a VCS repository. He has sent the user all the details about the module location and how it is used in the application. The user needs to look at the sources.

Assumed Frequency: Few times a year
Part of Initial Experience: No

VCS-2.3: Get Branched Sources

A colleague created a special branch for some of the application modules. He has sent the user all the details about the branch and branched modules. The user needs to start working on branched modules.

Assumed Frequency: Few times a year
Part of Initial Experience: No

VCS-2.4: Setup VCS for Local Sources

The user is not satisfied with his current IDE and he looks for a replacement. He downloaded the NetBeans IDE and wants to use it on his shared sources that are already on the local disk.

Assumed Frequency: Once
Part of Initial Experience: Yes

VCS-2.5: Setup VCS for Existing Projects

The user is didn't use NetBeans as VCS client on existing NetBeans projects. He decided to try a new VCS support and wants to enable it on his existing projects.

Assumed Frequency: Once
Part of Initial Experience: Yes

VCS-3: Put New NetBeans Project into VCS

The goal of this group of use case is to take a project that appears in Projects window and put it into VCS, so that the VCS actions are available on project and project sources.

VCS-3.1: Put Multiple Dependent Projects (Application)

The user haven't used a VCS for his application composed of multiple projects and decided to start using one. The user needs to make put all application projects into VCS repository.

Assumed Frequency: Once
Part of Initial Experience: Yes

VCS-3.2: Put Project

The user created a new NetBeans project either from scratch or with sources that have never been shared. The user needs to make the NetBeans project available to his colleagues by putting the project into VCS repository.

Assumed Frequency: Few times a year
Part of Initial Experience: No

VCS Day-to-Day Use Cases

VCS-4: Synchronize with Repository

The goal of this group of use cases is to get the local copy of projects up-to-date with the repository.

VCS-4.1: Get Latest Dependent Project Changes (Application)

The user comes to work in the morning or after lunch and needs to update the local copy of multiple projects with the latest changes done by his colleagues in the VCS repository.

Assumed Frequency: Twice a day
Part of Initial Experience: No

VCS-4.2: Put Latest Project Changes

The user modified some (multiple) project sources and created few other sources and needs to put them into VCS repository so that the changes are made available to other colleagues. Before he actually puts the sources into the repository, he needs to check whether the changes he made are compatible with the changes his colleagues have made in the repository since he updated the sources last time. He also needs to clean up the sources (comments, formatting, etc.).

The changes did by colleagues might include:

  • Modified files in the repository
  • New files in the repository
  • Removed files in the repository

The changes did by the user might include:

  • Modified files locally
  • Newly created files to be added into the repository
  • Newly created files to be excluded from adding into the repository
  • Removed files locally

Assumed Frequency: Few times a day
Part of Initial Experience: No

VCS-5: Work with Revisions

The goal of this group of use cases is to work with branches, tags and revisions; create them, examine, compare, etc.

VCS-5.1: Branch Multiple Dependent Projects (Application)

The user is preparing an application for the release, so he creates a branch for stabilization phase and puts there all projects composing the application.

Assumed Frequency: Few times a year
Part of Initial Experience: No

VCS-5.2: Branch Project Sources

The user is working on a risky feature or bugfix that needs to be developed separately. He creates a branch and puts there a project, multiple projects, or just specific source files.

Assumed Frequency: Few times a year
Part of Initial Experience: No

VCS-5.3: Merge Branched Project Sources

The user is done with the risky feature or bugfix so he wants to merge the branched source back to original branch.

Assumed Frequency: Few times a year
Part of Initial Experience: No

VCS-5.4: Tag Project Sources

The user needs to tag a project (multiple projects) or specific files to easily get back to the project/file state when needed. If the tag is no more needed, the user might want to remove the tag from project/files.

Assumed Frequency: Few times a year
Part of Initial Experience: No

VCS-5.5: Check in File Changes

The user needs to check the changes he've made in a file since he got the file from the repository.

Assumed Frequency: Few times a week
Part of Initial Experience: No

VCS-5.6: Discard File Changes

The user needs to discard the changes he made in a file since he got the file from the repository.

Assumed Frequency: Few times a week
Part of Initial Experience: No

VCS-5.7: Browse File History

The user needs to browse the file history (logs, annotations) and compare different revisions when examining a source file.

Assumed Frequency: Few times a week
Part of Initial Experience: No

VCS-5.8: Create Patch

The user needs to send his colleagues changes he made against the repository (in one or multiple projects/files), so that the colleagues can apply and test the changes.

Assumed Frequency: Few times a month
Part of Initial Experience: No

VCS-5.9: Apply Patch

The user needs to apply a patch containing changes made by his colleague.

Assumed Frequency: Few times a month
Part of Initial Experience: No

VCS-5.10: Create, Delete, Move, Rename File

The user performs basic file operations that result in changes in the repository. The user wants to create a file that is supposed to be put into repository (not all files would go to the repository). The user wants to delete a file from local disk and also from the repository. The user wants to move file into a different folder and keep the repository information (logs, annotations, etc.). The user wants to rename a file and keep the repository information.

Assumed Frequency: Few times a month
Part of Initial Experience: No

Project Features

About this Project

ui was started in November 2009, is owned by Jiří Kovalský, and has 44 members.
By use of this website, you agree to the NetBeans Policies and Terms of Use (revision 20160708.bf2ac18). © 2014, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo
 
 
Close
loading
Please Confirm
Close