2 stories
·
0 followers

Introducing SourceTree for Windows – a free desktop client for Git

2 Comments

The SourceTree team is thrilled to announce the latest addition to our family Atlassian distributed version control system (DVCS) family –SourceTree for Windows.

For some time now many Windows developers have been requesting a native counterpart to the SourceTree Mac desktop client. Windows developers, say goodbye to the command line and use the full capabilities of Git through SourceTree’s beautifully simple interface (and stop being jealous of what your Mac friends are using).

Download SourceTree for Windows


<>

A simple, powerful Git client

SourceTree for Windows a git client

SourceTree for Windows simplifies how you interact with Git repositories so you can focus on coding.

  • Get your team up and running using common Git commands from a simple user interface
  • Manage all your Git repositories, hosted or local, through a single client
  • Put Git commands at your fingertips: commit, push, pull and merge with just one-click
  • Use advanced features such as patch handling, rebase, shelve and cherry picking
  • Connect to your repositories inBitbucket, Stash, Microsoft TFS or GitHub

Perfect for Git newbies

SourceTree toolbar

SourceTree was built to make Git approachable for every developer – especially those new to Git.Every Git command is just a click away using the SourceTree interface.

  • Create and clone repos from anywhere
  • Commit, push, pull and merge
  • Detect and resolve conflicts
  • Search repository histories for changes

Visualize your repositories

SourceTree keeps track of code activity and provides an at-a-glance view of everything from projects to repositories to changesets.

Visualize your Git repos

Use SourceTree’s Bookmarks to get a real-time, aggregated view of all your projects and repositories. Jump directly to the changeset graph to visualize tovisualize changesets across multiple branches and forks.

Powerful enough for Git veterans

Diff view

SourceTree makes Git simple for everyone, but also makes Git experts faster and more productive. Review your outgoing and incoming changesets, cherry-pick between branches, create and apply patches, rebase, shelve changesets and more with lightning speed.

Git one-stop shop

Atlassian offers a full complement of tools that will help you and your dev team make the most of Git. Whether you’re working on Mac or Windows, behind the firewall or in the cloud, Atlassian’s family of Git tools will bring you the power of Git while making adoption a breeze.

Connect to the cloud or behind the firewall

clone-in-bb

Clone from Bitbucket or Stash right into SourceTree

Thanks to hosting services like Bitbucket, many small teams working with Git repositories begin coding in the cloud. Connect SourceTree to Bitbucket’s free unlimited private repositories to easily manage your Git repositories from the SourceTree interface.

Stash, Atlassian’s Git repository manager for Enterprises, makes it simple to manage your Git Server – behind the firewall. With powerful two-way integration, Stash and SourceTree make it easy for your team to develop with Git. SourceTree can discover and fetch your Stash repositories. And one-click clone operations get you the source you need fast.

If you don’t have Stash or Bitbucket yet, not a problem, SourceTree for WIndows works with any Git repository, including GitHub, Microsoft Team Foundation Server or your own Git server.

What’s coming next?

Windows

We received great feedback from the SourceTree for Windows private beta users (a huge thank you). We will continue to push frequent updates and features to SourceTree for Windows users. We plan to bring all the great features that are part of SourceTree for Mac to Windows as well. What can you expect in the near future:

  • Mercurial support
  • Git-flow support
  • Custom actions
  • JIRA integration
  • and heaps more

Mac

We will continue to push out frequent releases for the Mac client. Stay tuned for an upcoming release featuring:

  • Interactive rebase support
  • Updated icons
  • Desktop notifications

Get SourceTree for Free!

If you’re new to Git, or just want a handy tool to make you even faster, download SourceTree – it’sfreeat our brand spankin’ new website.

Download SourceTree for Windows


<>
Read the whole story
LorenzCK
1494 days ago
reply
Waiting for Mercurial support...
Italy
Share this story
Delete
1 public comment
sirshannon
1496 days ago
reply
This looks like fun.

How to expose async methods in a Windows Runtime Component

1 Comment

We need to follow precise rules when we develop a Windows Runtime Component. One of the most important is that we have restrictions on the types that can be exposed. For example, we can’t have public methods that return Task.

Suppose we have the following class inside a Windows Runtime Component:

public sealed class MyLibrary
{
    public async Task<string> GetUriContentAsync(string uri)
    {
        var httpClient = new HttpClient();
        var content = await httpClient.GetStringAsync(uri);

        return content;
    }
}

When we compile it, we’ll obtain the following error message:

Method ‘MyRuntimeComponent.MyLibrary.GetUriContent(System.String)’ has a parameter of type ‘System.Threading.Tasks.Task’ in its signature. Although this generic type is not a valid Windows Runtime type, the type or its generic parameters implement interfaces that are valid Windows Runtime types. Consider changing the type ‘Task’ in the method signature to one of the following types instead: Windows.Foundation.IAsyncAction, Windows.Foundation.IAsyncOperation, or one of the other Windows Runtime async interfaces. The standard .NET awaiter pattern also applies when consuming Windows Runtime async interfaces. Please see System.Runtime.InteropServices.WindowsRuntime.AsyncInfo for more information about converting managed task objects to Windows Runtime async interfaces.

In particular, the message suggests us to “Consider changing the type ‘Task’ in the method signature to one of the following types”.

So, we need to return one of the allowed return types. An extension method defined on Task type greatly simplifies this. The idea is to creat a Task as usual, and then invoke this extension method to obtain a type that is valid for a Windows Runtime Component:

public sealed class MyLibrary
{
    public IAsyncOperation<string> GetUriContentAsync(string uri)
    {
        return this.GetUriContentAsynHelper(uri).AsAsyncOperation();
    }

    private async Task<string> GetUriContentAsynHelper(string uri)
    {
        var httpClient = new HttpClient();
        var content = await httpClient.GetStringAsync(uri);

        return content;
    }
}

The original GetUriContentAsync method is now a private helper method. Note that, as long as methods in Windows Runtime Component aren’t public, we don’t have any restrictions on return types. So, in this case it’s perfecly legal to return a Task.

Then, in the new version of GetUriContentAsync, we invoke the AsAsyncOperaion extension method on the result of GetUriContentAsyncHelper to obtain an IAsyncOperation object. It is a valid Windows Runtime return type that represents an asynchronous operation.

In this way, in a Windows Store app we can write something like this:

private async void button_Click(object sender, RoutedEventArgs e)
{
    MyLibrary lib = new MyLibrary();
    var content = await lib.GetUriContentAsync("http://marcominerva.wordpress.com");

    // ...
}

Read the whole story
LorenzCK
1494 days ago
reply
Taking note. #winrt
Italy
Share this story
Delete