Branch and Push Restrictions for Git Repositories in Space

Teams using Git repositories in Space can setup rules to limit what contributors can do, or to enforce certain standards. Branch restrictions let us restrict who can create and delete branches, and who can (force) push to a branch. With push restrictions, we can verify committers, limit file size and file types.

Let’s look at a few examples!

Branch Restrictions Prevent Changes that are Hard to Undo

In Space, we can make use of branch restrictions to prevent certain changes to a repository, typically those that are hard to undo. We can enforce restrictions on everyone in the team, and specific roles or members. And because there’s an exception to every rule, Space also lets us set those.

An example use case for branch restrictions would be to prevent force push to the master branch. Since a forced push always overwrites the remote, having someone force push may result in newer code changes being lost. Even if the person who’s force pushing took precautions by updating their local version of the repository, there’s still the hassle of every team member having to update their local repo.

From the repository settings, we can Edit Branch Restrictions, and create a rule for one or more branches.

Restrict force push to Git repository in JetBrains Space

We can use the +: prefix to include a branch, or -: to exclude it. Branch specifications need the full branch name, so for the master branch we woud have to specify +:refs/heads/master. Regular expressions can be used here as well, if needed.

Now, what could we do here… Branch restriction setup will depend on the workflow the team will be using.

We can configure our trunk (or master branch) in such a way that nobody can push to it directly, except for certain project roles or team members. This would encourage the use of branches and merge requests to review code, allowing only a few folks to merge those into master. Several rules can be added and combined, with different settings per branch or set of branches.

Protected branches in Space repositories

Note: protecting a branch from pushing changes applies to direct pushes from a developer machine, and to merge requests. Restricting push to everyone effectively restricts any push, by anyone. Make sure to set exceptions for certain roles or team members.

Push Restrictions help with Commit Best Practices

Next to branch restrictions, Space also lets us specify push restrictions for Git repositories. These can be used to enforce best practices, such as limiting file size, or making sure the committer matches the user who’s pushing to the repository.

Push restrictions in Space Git repositories

Verifying the committer is especially useful when folks on the team contribute to multiple code bases. For example, when they have their Git e-mail configured as a personal e-mail address, Space can reject their commits unless they use a company e-mail address.

Tip: the commit e-mail address in Git can be overridden per repository. From a local repo, run the following to specify the commit e-mail address for that repository:
git config user.email "email.address@example.com"

Developers spend a lot of time working with Git. Using branch and push restrictions in Space can help improve their productivity by preventing accidental or unwanted changes, and by assisting in using best practices for commits.

Give JetBrains Space EAP a try and let us know what you think!

Posted in Projects, Repositories, Sendtoall | Tagged , , , | 2 Comments

Dashboards with a Personal Touch

Our vision for Space is to make an efficient collaborative environment for teams. We believe that for an integrated solution to be effective, it should provide the optimal level of information needed for each team member to perform their role, instead of becoming a source of excessive noise, distraction, or informational overload. That’s why we put our focus on personalizing every bit of information inside Space.

Out of the most visible parts of the interface, dashboards are a prime candidate for personalization. A dashboard gives an instant overview of the current state of affairs for a team member or a project, and a starting point for navigating through the whole system.

Space has two types of dashboards – a personal dashboard and a project dashboard.

Personalization funnel for DashboardLet’s take a look at them both in more detail.

Continue reading

Posted in Concepts, Sendtoall | Tagged , , , , | Leave a comment

Space 2020 Roadmap

Welcome to Space 2020! We would like to share our plans and priorities for the current year in order to make sure that we’re moving in the right direction and that what we have planned will bring you the features you expect and need most. We’re planning for the official release of Space 2020 to happen in Q3 or Q4 of this year.

roadmap
Continue reading

Posted in Announcements, Sendtoall | Tagged , , , , , , , , , , , , , , , , , | 14 Comments

Introducing Space Guide – Tips & Tricks to Use Space Efficiently!

We’re happy to announce the Space Guide – a central place for tips & tricks on how to use Space efficiently! Tips & tricks will be shared periodically from our Twitter account, with the Space Guide providing additional information and resources.

Follow @jetbrains_space on Twitter

Each tip has a short annotated video, a description, and links to other resources like the web help. Tips are available separately, by topic, and in playlists focusing on a certain theme.

The Space Guide provides Tips & Tricks to use JetBrains Space more efficiently

Have your own tips & tricks to share?

As we’re dogfooding Space at JetBrains, we’ve already gathered quite a few tips & tricks from our team, and more will be added over time.

If you’re using the JetBrains Space EAP and have some tips of your own, we would love to hear them! Share your own tips and tricks in the comments below.

Posted in Announcements, Sendtoall | Tagged , , , , , , | Leave a comment

Mirroring an External Git Repository in Space

Creating a new Git repository in Space is easy. You can create and initialize a new or empty repository and start pushing code, or migrate an existing Git repository from GitHub or BitBucket and make it available in Space, including all branches, tags and commits.

There’s an additional option: mirroring a repository. In this post, let’s have a closer look and see how you can mirror Git repositories in Space.

Why mirror a Git repository?

A mirrored Git repository in Space is an always-in-sync copy of another Git repository. Synchronization can be “pull-only”, when Space automatically pulls all commits (and tags & branches) from a remote. A bi-directional mirror can be set up as well, where changes pushed to Space are automatically pushed to the remote.

Mirror repository from external Git

Continue reading

Posted in Projects, Repositories, Sendtoall | Tagged , , , , | 6 Comments

Getting started with the Space HTTP API

Most of the data and operations available in JetBrains Space can be accessed using an HTTP API. The API documentation, as well as the HTTP API playground for your Space organization do a good job in describing the types of interactions that are possible.

In this blog post, we want to look at a few details about working with the Space API more efficiently.

Why would I use the Space API?

Having an HTTP API to access Space makes it easy to share content and data with other applications. We’ve seen our users experiment with creating issues in Space projects, using the API. At JetBrains, we have used the API to import over 1300 user profiles into Space, as well as hundreds of internal blog posts, data about meeting rooms and so on.

Other types of integrations could be receiving build status from a CI server, sharing a message in a chat channel, or even automatically creating a “digest” blog post from issues that have been resolved in the past week.

Continue reading

Posted in Extensibility, Sendtoall | Tagged , , , , | 4 Comments

The Concept of Project Management in Space

With Space, we intend to create an integrated team environment. Using multiple tools makes it difficult to keep track of everything about your projects, teams, and people. Instead of scattering our work and communication across tools, Space endeavors to centralize it all in one place.

Space combines the tools for software development, collaboration, planning, analysis, and project management. It also contains documents, knowledge base, and company structure – all in one interface, powerful for technical people, and friendly for everyone to use. Programmers, designers, QA, PMMs, HRs, and managers feel equally at home and work together seamlessly on projects. This is the idea behind Space and the destination we’re headed for.

Continue reading

Posted in Concepts, Project Management, Projects, Sendtoall | Tagged , , | 9 Comments

Introducing Space Packages

Space packages
We’re delighted to introduce Space Packages! In this post we’d like to share with you the existing features, as well as the planned features we have in store for this Space module.

First of all, what is Packages? Packages is a package repository manager. If you’ve ever heard of Maven Central, Docker Hub, or NuGet.org, then you’ll easily get the idea. In a nutshell, like these products, it lets you create your own repositories and use them to publish and share packages of various types, such as Docker/OCI images, .jar and .pom files, and others, all inside your Space instance!

While this is still a work in progress, you can already try out some of the repositories.

Continue reading

Posted in Packages, Projects, Sendtoall | Tagged , , , , | 6 Comments

Projects in Space: Self-Service Over Request-And-Wait

The main idea behind projects in Space is to give each team a distinct place for all their work-related resources, which is conveniently organized, managed, and easy to navigate to.

Project Dashboard

If you are already familiar with the concept of Teams in Space, you may wonder how Projects fit in. While it is usual for a team to have an only project, it’s not always the case. Sometimes you want to invite a person from another team to help with something, or people from different teams want to get together to start a new side project.

Continue reading

Posted in Concepts, Projects, Sendtoall | Tagged , , , , , , , | 8 Comments

Teams – a Core Concept to Working and Communicating in Space

Teams are a key concept in Space. Teams represent the organization structure and how people work together. They can be flat and simple, or more complex hierarchies with multi-level teams.

Having teams eliminates the need for creating concepts such as groups and then making sure that every team member is also part of it. In many organizations, those groups are centered around distribution or access rights and don’t fully map to the organization structure.

In Space, teams and roles give us a convenient way to browse the organization by its real structure. A person can be a member of one or several teams and have a role that represents their title or specialty.

The Team Directory gives us an overview of all the teams, locations, and roles in our organization. We can drill down those concepts using various filters. If we’re searching for a certain person or someone with a certain role, the Team Directory can help us find them!

Team Directory gives us an overview of all the teams, locations and role

Continue reading

Posted in Concepts, Sendtoall, Teams | Tagged , , , , | 1 Comment