# CheckoutIsValid

> Given an asset or a list of assets this function returns true if Provider.Checkout is a valid task to perform on at least one of the given assets.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor.VersionControl](/engine/6000.5/script-reference/unityeditor/versioncontrol.md)
* **Assembly:** UnityEditor.CoreModule

## CheckoutIsValid(AssetList)

Given an asset or a list of assets this function returns true if [Provider.Checkout](/engine/6000.5/script-reference/unityeditor/versioncontrol/provider/checkout.md) is a valid task to perform on at least one of the given assets.

```csharp
public static bool CheckoutIsValid(AssetList assets)
```

### Parameters

**** (\[AssetList]\(/engine/6000.5/script-reference/unityeditor/versioncontrol/assetlist)): List of assets.

### Returns

| Type                                                          | Description |
| ------------------------------------------------------------- | ----------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) |             |

### Remarks

The [CheckoutMode](/engine/6000.5/script-reference/unityeditor/versioncontrol/checkoutmode.md) option can be used to narrow down the asset list to a specific type. For example: to only check whether meta files can be checked out and to ignore their asset file states, the [CheckoutMode.Meta](/engine/6000.5/script-reference/unityeditor/versioncontrol/checkoutmode/meta.md) must be used.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/CheckoutIsValid")]
    public static void ExampleCheckoutIsValid()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs.meta"));
        Debug.Log(Provider.CheckoutIsValid(assets, CheckoutMode.Meta));
    }
}
```

The code above will check the "ExampleAsset.cs" meta file and return true to the console if It can be checked out.

## CheckoutIsValid(AssetList, CheckoutMode)

Given an asset or a list of assets this function returns true if [Provider.Checkout](/engine/6000.5/script-reference/unityeditor/versioncontrol/provider/checkout.md) is a valid task to perform on at least one of the given assets.

```csharp
public static bool CheckoutIsValid(AssetList assets, CheckoutMode mode)
```

### Parameters

**** (\[AssetList]\(/engine/6000.5/script-reference/unityeditor/versioncontrol/assetlist)): List of assets.**** (\[CheckoutMode]\(/engine/6000.5/script-reference/unityeditor/versioncontrol/checkoutmode)): Specify to check only asset files, meta files or both.

### Returns

| Type                                                          | Description |
| ------------------------------------------------------------- | ----------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) |             |

### Remarks

The [CheckoutMode](/engine/6000.5/script-reference/unityeditor/versioncontrol/checkoutmode.md) option can be used to narrow down the asset list to a specific type. For example: to only check whether meta files can be checked out and to ignore their asset file states, the [CheckoutMode.Meta](/engine/6000.5/script-reference/unityeditor/versioncontrol/checkoutmode/meta.md) must be used.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/CheckoutIsValid")]
    public static void ExampleCheckoutIsValid()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs.meta"));
        Debug.Log(Provider.CheckoutIsValid(assets, CheckoutMode.Meta));
    }
}
```

The code above will check the "ExampleAsset.cs" meta file and return true to the console if It can be checked out.

## CheckoutIsValid(Asset)

Given an asset or a list of assets this function returns true if [Provider.Checkout](/engine/6000.5/script-reference/unityeditor/versioncontrol/provider/checkout.md) is a valid task to perform on at least one of the given assets.

```csharp
public static bool CheckoutIsValid(Asset asset)
```

### Parameters

**** (\[Asset]\(/engine/6000.5/script-reference/unityeditor/versioncontrol/asset)): Single asset.

### Returns

| Type                                                          | Description |
| ------------------------------------------------------------- | ----------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) |             |

### Remarks

The [CheckoutMode](/engine/6000.5/script-reference/unityeditor/versioncontrol/checkoutmode.md) option can be used to narrow down the asset list to a specific type. For example: to only check whether meta files can be checked out and to ignore their asset file states, the [CheckoutMode.Meta](/engine/6000.5/script-reference/unityeditor/versioncontrol/checkoutmode/meta.md) must be used.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/CheckoutIsValid")]
    public static void ExampleCheckoutIsValid()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs.meta"));
        Debug.Log(Provider.CheckoutIsValid(assets, CheckoutMode.Meta));
    }
}
```

The code above will check the "ExampleAsset.cs" meta file and return true to the console if It can be checked out.

## CheckoutIsValid(Asset, CheckoutMode)

Given an asset or a list of assets this function returns true if [Provider.Checkout](/engine/6000.5/script-reference/unityeditor/versioncontrol/provider/checkout.md) is a valid task to perform on at least one of the given assets.

```csharp
public static bool CheckoutIsValid(Asset asset, CheckoutMode mode)
```

### Parameters

**** (\[Asset]\(/engine/6000.5/script-reference/unityeditor/versioncontrol/asset)): Single asset.**** (\[CheckoutMode]\(/engine/6000.5/script-reference/unityeditor/versioncontrol/checkoutmode)): Specify to check only asset files, meta files or both.

### Returns

| Type                                                          | Description |
| ------------------------------------------------------------- | ----------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) |             |

### Remarks

The [CheckoutMode](/engine/6000.5/script-reference/unityeditor/versioncontrol/checkoutmode.md) option can be used to narrow down the asset list to a specific type. For example: to only check whether meta files can be checked out and to ignore their asset file states, the [CheckoutMode.Meta](/engine/6000.5/script-reference/unityeditor/versioncontrol/checkoutmode/meta.md) must be used.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/CheckoutIsValid")]
    public static void ExampleCheckoutIsValid()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs.meta"));
        Debug.Log(Provider.CheckoutIsValid(assets, CheckoutMode.Meta));
    }
}
```

The code above will check the "ExampleAsset.cs" meta file and return true to the console if It can be checked out.
