GithubHelp home page GithubHelp logo

iceberg's Introduction

Iceberg

Iceberg is the main toolset for handling VCS in Pharo.

Iceberg-Pharo-Integration
Complete Test

More concretely, Iceberg provides tools to checkout, commit, merge and other common operations in git repositories, all directly from the image. In fact, git is currently the only VCS backend for Iceberg, but it's design supports the addition of other options.

Iceberg also provides some plugins for smooth and fast integration with common actions in the workflow of contributors, such as creating a branch based on a GitHub issue number.

Getting Started

Newcomer as User? Follow this 5 minutes tutorial.

Newcomer as Contributor? Read this guide.

Want to Chat? There is the #iceberg channel in the Pharo Discord server.

You can find more useful information in our Wiki section.

License

The code is licensed under the MIT license.

iceberg's People

Contributors

akevalion avatar astares avatar daniels220 avatar demarey avatar ducasse avatar elbow avatar estebanlm avatar gcotelli avatar guillep avatar hellerve avatar hogoww avatar inao0 avatar jecisc avatar jordanmontt avatar macta avatar marcusdenker avatar noha avatar npasserini avatar pavel-krivanek avatar peteruhnak avatar rinzwind avatar sabinema avatar sbragagnolo avatar seandenigris avatar sergestinckwich avatar tesonep avatar theseion avatar tinchodias avatar vincentblondeau avatar zecke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iceberg's Issues

Allow to move an image file

Local git repos in iceberg-cache should keep being valid, either because they have been moved with the image or because we re-create the local clones from their remote counterparts.

Other git repos (with absolute file locations) will be expected to be in the same place, regardless of the image being moved.

Improve repository handling

  1. Add a repository registry, assign names to repositories.
  2. Allow to decide location of repositories, and detect pre-existing clones.
  3. ¿Provide a view to select repositories?
  4. Allow to set subdirectory and take advantage of gitfiletree posibilities.

Update mechanism

Should allow to update the tool to the latest version:
Iceberg update

or to a specific version

Iceberg update: '0.0.2'
Iceberg update: #stable
Iceberg update: #bleedingEdge

What to do with "tag" creation/deletion

When you create a new tag inside a package, an MCDefinitionOperation is created, but with current formats it does not make sense to save it in github as this information is only contained inside classes.

If we require to ensure that a tag persists even without classes, we should change the file/tree format.

Ignore unloaded packages.

Unloaded packages should not be shown in the changes tree (or note that they are unloaded).
Also they should not be taken into account when commited.

Add names to ice repositories

Every created repository is remembered, so if you execute again IceRepository origin: '[email protected]:npasserini/pharo-git.git' you will get the same repository again.

Also, each repository has a name that can be a simpler way to get access to it.
The default name is the same as the name of the github repository, so you can regain access to the recently created repository by evaluating: IceRepository named: 'pharo-git'.

You can change the default name by doing: myRepo name: 'default'.

Conflicts creating a repository after changing branches.

We can reproduce it by changing pharo-git branch, and starting IceExamples exampleSynchronizer

exampleSynchronizer
    | repository changeSet |
    repository := Git new origin: '[email protected]:npasserini/pharo-git.git'.
    changeSet := IceRepositoryChangeSet fromRepository: repository.
    IceSynchronizer new
        changeSet: changeSet;
        openWithSpec.

I do not think it is a problem of the example, can happen in production code.
We should decide if we take the branch from the (pre)existing directory, use another directory or something smarter. Maybe we could let the user decide in each case.

On the other hand, if we removed the working copies from disk, this error would never happen.

Refactor changes analysis

There are some types MCDefinition (specifically: MCOrganizationDefinition, which arises when you create or remove a Tag/Category) that contain no package information, but originally we obtained it from a package, we should refactor the way we compute changes to not loose the package association in the first moment.

This enhancement could become unnecessary if we change the underlying changes model.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.